Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

mysql: процедуры и функции

21K
20 декабря 2006 года
psychos
4 / / 20.12.2006
приветствую !

имеется таблица:
_________________
name|value
-------------------
variable1|alpha
variable2|betta
.........
variable100|zetta
_________________
как видно в ней переменные и соответствующие им значения
нужно используя процедуры и функции вывести значение переменной+префикс, который идет в качестве параметра.
нужно чтото типа
call disp("pref_","variable1");
результатом должно быть
pref_alpha
прошу помощи... пытаюсь освободить часть ресурсов с PHP и переложить их на DB
4
20 декабря 2006 года
mike
3.7K / / 01.10.2002
RTFM

SELECT CONCAT("prefix_",`value`) FROM таблица.
21K
21 декабря 2006 года
psychos
4 / / 20.12.2006
а если такая сетуация :
фрагмент логики системы:
Код:
mysql> select * from user;
+----+-------+
| id | uname |
+----+-------+
|  1 | vasya |
|  2 | vova  |
+----+-------+
2 rows in set (0.00 sec)

mysql> select * from pay;
+----+------+------+
| id | usid | pay  |
+----+------+------+
|  1 | 1    |   10 |
|  2 | 1    |   10 |
|  3 | 1    |   10 |
|  4 | 1    |   15 |
+----+------+------+
4 rows in set (0.00 sec)

mysql> select * from balance;
+----+------+------+
| id | usid | val  |
+----+------+------+
|  1 |    1 |    9 |
|  2 |    1 |    7 |
|  3 |    1 |   11 |
|  4 |    1 |   23 |
|  5 |    1 |    3 |
+----+------+------+
5 rows in set (0.01 sec)

mysql> select sum(pay) from pay where usid=1 into @a;
Query OK, 1 row affected (0.00 sec)

mysql> select sum(val) from balance where usid=1 into @b;
Query OK, 1 row affected (0.00 sec)

mysql> select if (@a>@b,1,0);
+----------------+
| if (@a>@b,1,0) |
+----------------+
|              0 |
+----------------+
1 row in set (0.00 sec)

mysql> select if (@a>@b,1,0),@a,@b;
+----------------+------+------+
| if (@a>@b,1,0) | @a   | @b   |
+----------------+------+------+
|              0 | 45   | 53   |
+----------------+------+------+
1 row in set (0.01 sec)

нужно реализовать такую процедуру, при запросе которой бы выполнялось следующее:
в качестве входного параметра идет имя пользователя, результатом выполнения толжно быть 1 - если у пользователя положительный баланс, НИЧЕГО если отрицательный. в данном примере, таблица платежей - pay, таблица расходов - balance

прошу помощи.... загвоздка в том что функции возвращвют результат, но тела у функции нету, в процедуре наоборот есть тело но нильзя возвращать результет, все необходимо выполнять в одном запросе, может мне нехватает знанияй....
к примеру:
 
Код:
select check_user('vasya');

необходим пример реализации...
21K
23 декабря 2006 года
psychos
4 / / 20.12.2006
разве никто не может помочь ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог