Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / добавить колонку greatest() / 7 сообщений из 7, страница 1 из 1
18.06.2015, 13:47:12
    #38986894
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавить колонку greatest()
Всем доброго времени суток, появилась необходимость, добавить еще одну колонку к результатам запроса показанного ниже
greatest(firm1,firm2,firm3,firm4,firm5), необходима консультация по реализации данной возможности.....
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT `b`.`name` as 'Наименование', `b`.`regnum` as 'РегНомер', 
	MAX(IF(t.name = 'firm1', a.data, NULL)) AS 'firm1',
	MAX(IF(t.name = 'firm2', a.data, NULL)) AS 'firm2',
	MAX(IF(t.name = 'firm3', a.data, NULL)) AS 'firm3',
	MAX(IF(t.name = 'firm4', a.data, NULL)) AS 'firm4',
	MAX(IF(t.name = 'firm5', a.data, NULL)) AS 'firm5'
FROM `Archive` a
INNER JOIN `banks` b on `b`.`uid`=`a`.`bank_uid`
INNER JOIN `type`  t on `t`.`uid`=`a`.`type_uid`
WHERE `date_uid`=2 and `currency_uid`=1 GROUP BY `bank_uid` ORDER BY `b`.`regnum`
...
Рейтинг: 0 / 0
18.06.2015, 13:50:46
    #38986901
добавить колонку greatest()
Дмитри4,

какие сложности? почитай про вложенные запросы (derived table, select from select , etc.)
...
Рейтинг: 0 / 0
18.06.2015, 13:52:30
    #38986903
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавить колонку greatest()
Дмитри4добавить еще одну колонку к результатам запроса показанного ниже
greatest(firm1,firm2,firm3,firm4,firm5)Это-то просто - MAX(a.data) при условии, что t.name не может принимать других значений, кроме перечисленных.

А вот поля в секциях SELECT и OREDER BY, не попавшие в группировку - это чревато, могут дать неожиданный результат. Или даже синтаксическую ошибку, при некоторых настройках MySQL.
...
Рейтинг: 0 / 0
18.06.2015, 14:05:41
    #38986923
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавить колонку greatest()
miksoftДмитри4добавить еще одну колонку к результатам запроса показанного ниже
greatest(firm1,firm2,firm3,firm4,firm5)Это-то просто - MAX(a.data) при условии, что t.name не может принимать других значений, кроме перечисленных.

А вот поля в секциях SELECT и OREDER BY, не попавшие в группировку - это чревато, могут дать неожиданный результат. Или даже синтаксическую ошибку, при некоторых настройках MySQL.

Решение от miksoft показалось мне более удобным, запрос динамический часть SELECT формируется посредством prepared statements, ошибок с группировкой по замечено небыло, потестирую как будет работать и проверю вручную
...
Рейтинг: 0 / 0
18.06.2015, 14:08:36
    #38986926
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавить колонку greatest()
Дмитри4ошибок с группировкой по замечено не былоВозможно, просто повезло. Возможно, нет. Точно можно сказать только зная конкретные данные, которые хранятся в таблицах.
...
Рейтинг: 0 / 0
18.06.2015, 14:16:37
    #38986941
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавить колонку greatest()
miksoftДмитри4ошибок с группировкой по замечено не былоВозможно, просто повезло. Возможно, нет. Точно можно сказать только зная конкретные данные, которые хранятся в таблицах.
Пока оставлю так, думаю что проблем не возникнет, ну а уже если что-то будет замечено надо будет прибегнуть к помощи специалистов данного форума =)
...
Рейтинг: 0 / 0
18.06.2015, 14:17:41
    #38986944
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавить колонку greatest()
Сейчас выкладывать инфу и описывать структуру базы долго =(
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / добавить колонку greatest() / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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