Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / prepared statement and array / 6 сообщений из 6, страница 1 из 1
15.08.2013, 20:26:09
    #38368173
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
prepared statement and array
Подскажите пожалуйста, как в подготовленных выражения вставить массив?
К примеру
Код: sql
1.
select id,id_tag from columns where id_table=:tableid


получаю кучу тегов {tag1,...,tagN}, потом строю такой запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
select date_time
,sum(case when id_tag=tag1 then value else 0 end) as val1
...
,sum(case when id_tag=tagN then value else 0 end) as valN
from data_tag
where id_tag in (tag1,...tagN)
group by date_time


Как результат первого запроса обработать во втором?
...
Рейтинг: 0 / 0
15.08.2013, 20:34:30
    #38368179
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
prepared statement and array
Как - циклом. Перебираете все записи из результата первого запроса и конкатенацией строите второй запрос.
...
Рейтинг: 0 / 0
15.08.2013, 20:52:59
    #38368201
ldar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
prepared statement and array
Ну я так и сделал, просто думал есть более изящное решение.
...
Рейтинг: 0 / 0
15.08.2013, 20:53:58
    #38368202
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
prepared statement and array
ldarНу я так и сделал, просто думал есть более изящное решение.В каком-нибудь PHP или другом ЯП, может, и есть... А в MySQL, увы, нету.
...
Рейтинг: 0 / 0
16.08.2013, 08:16:51
    #38368411
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
prepared statement and array
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select 
  insert(group_concat(concat(',',id_tag)),1,1,''),
  group_concat(concat(
   ',sum(case when id_tag=',id_tag,
   ' then value else 0 end) as val',id))
into @where, @eval
from columns
where id_table=:tableid;

set @sql=concat(
'select date_time',@eval,
' from data_tag where id_tag in(',@where,
')group by date_time;'
);
-- select @sql;
PREPARE DSQL FROM @sql;
EXECUTE DSQL;
DEALLOCATE PREPARE DSQL;
...
Рейтинг: 0 / 0
16.08.2013, 10:52:55
    #38368590
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
prepared statement and array
Cygapb-007
Код: sql
1.
  insert(group_concat(concat(',',id_tag)),1,1,''),

Код: sql
1.
GROUP_CONCAT(id_tag SEPARATOR ','),



А вообще - да, вынужден поправиться. В процедурном языке MySQL нету, а в SQL таки есть.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / prepared statement and array / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]