Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / дополнение запроса / 8 сообщений из 8, страница 1 из 1
26.06.2015, 13:03:11
    #38993573
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
Всем доброго времени суток, появилась необходимость дополнить следующий запрос:
Код: sql
1.
2.
3.
4.
5.
SELECT  GROUP_CONCAT(DISTINCT  CONCAT( 'MAX(IF(t.name = ''', name,  ''', a.data, NULL)) AS ', '\'', t.name,'\'' )  ) as head INTO @columns 
FROM `Archive` as a 
INNER JOIN type t on t.uid=a.type_uid
INNER JOIN `date`  d on `d`.`uid`=`a`.`date_uid`
WHERE d.docdate='2015-05-01';



На текущий момент запрос работает только с одной датой, появилась необходимость выбрать все даты из таблицы и получить результат, когда пытаюсь его дополнить получаю что-то типа: Subquery returns more than 1 row(подзапрос возвращает более одной строки)

Как я могу реализовать необходимую функцию?
...
Рейтинг: 0 / 0
26.06.2015, 13:21:43
    #38993595
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
Дмитри4
Код: sql
1.
AS ', '\'', t.name,'\''

Не советую, гражданин, мнэээ, не советую (с) Лучше бэктиками обрамляйте, если уж так принципиально увидеть имя поля.
Дмитри4когда пытаюсь его дополнить получаю что-то типа: Subquery returns more than 1 row(подзапрос возвращает более одной строки)Так вы покажите, как пытаетесь дополнить, что за запрос в итоге получается.
...
Рейтинг: 0 / 0
26.06.2015, 13:39:36
    #38993622
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
tanglirДмитри4
Код: sql
1.
AS ', '\'', t.name,'\''

Не советую, гражданин, мнэээ, не советую (с) Лучше бэктиками обрамляйте, если уж так принципиально увидеть имя поля.
Дмитри4когда пытаюсь его дополнить получаю что-то типа: Subquery returns more than 1 row(подзапрос возвращает более одной строки)Так вы покажите, как пытаетесь дополнить, что за запрос в итоге получается.

переделаю на бэктики позже =)
Задача получить вывод:
2015-05-01 результат group_concat
2015-04-01 результат group_concat
2015-03-01 результат group_concat

и так далее.....
...
Рейтинг: 0 / 0
26.06.2015, 13:41:46
    #38993624
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
Дмитри4Задача получить вывод:
2015-05-01 результат group_concat
2015-04-01 результат group_concat
2015-03-01 результат group_concat

и так далее.....ну так в чём загвоздка?
Код: sql
1.
2.
3.
4.
5.
SELECT d.docdate, GROUP_CONCAT(DISTINCT  CONCAT( 'MAX(IF(t.name = ''', name,  ''', a.data, NULL)) AS ', '\'', t.name,'\'' )  ) as head INTO @columns 
FROM `Archive` as a 
INNER JOIN type t on t.uid=a.type_uid
INNER JOIN `date`  d on `d`.`uid`=`a`.`date_uid`
GROUP BY d.docdate;
...
Рейтинг: 0 / 0
26.06.2015, 13:42:41
    #38993627
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
Поправочка, INTO @columns надо убрать, конечно же. Как вы себе представляете резалтсет в переменной?
...
Рейтинг: 0 / 0
26.06.2015, 14:10:29
    #38993669
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
tanglirДмитри4Задача получить вывод:
2015-05-01 результат group_concat
2015-04-01 результат group_concat
2015-03-01 результат group_concat

и так далее.....ну так в чём загвоздка?

скорее всего была в этом =) , как раз так и пробывал
...
Рейтинг: 0 / 0
29.06.2015, 14:47:39
    #38995043
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
Запрос при группировке мешает значения, как можно поправить чтобы значения шли в порядке №1
Код: sql
1.
2.
3.
№1 - MAX(IF(t.type_xml = 'CallDep', a.data, NULL)) AS 'CallDep',MAX(IF(t.type_xml = 'Dep1811', a.data, NULL)) AS 'Dep1811',MAX(IF(t.type_xml = 'Dep91180', a.data, NULL)) AS 'Dep91180',MAX(IF(t.type_xml = 'Dep1up', a.data, NULL)) AS 'Dep1up',MAX(IF(t.type_xml = 'Dep90', a.data, NULL)) AS 'Dep90'

№2 - MAX(IF(t.type_xml = 'Dep90', a.data, NULL)) AS 'Dep90',MAX(IF(t.type_xml = 'CallDep', a.data, NULL)) AS 'CallDep',MAX(IF(t.type_xml = 'Dep1811', a.data, NULL)) AS 'Dep1811',MAX(IF(t.type_xml = 'Dep91180', a.data, NULL)) AS 'Dep91180',MAX(IF(t.type_xml = 'Dep1up', a.data, NULL)) AS 'Dep1up'
...
Рейтинг: 0 / 0
30.06.2015, 10:26:20
    #38995628
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дополнение запроса
вопрос закрыт? сделал так:
Код: sql
1.
2.
3.
4.
5.
SELECT  d.docdate,GROUP_CONCAT(DISTINCT  CONCAT( 'MAX(IF(t.type_xml = ''', type_xml,  ''', a.data, NULL)) AS ', '\'', t.type_xml,'\'' ) ORDER BY a.type_uid  ) as head
FROM `DepositsRub` as a 
INNER JOIN type t on t.uid=a.type_uid
INNER JOIN `date`  d on `d`.`uid`=`a`.`date_uid`
GROUP BY d.docdate
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / дополнение запроса / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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