![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Формирование запроса [D7, MySQL]
Шоломицкий С. А. © (2007-01-27 02:46:00)Прошу помочь в составлении запроса.
Имеется одна таблица, в ней есть поля 'name' и 'colvo'.
Мне необходимо вывести в ОДНУ СТРОКУ В РАЗНЫЕ СТОЛБЦЫ сумму значений поля 'colvo' для поля 'name'=Вася и 'name'=Коля
Пробовал так:
(SELECT SUM(`col`) 'n1' FROM akcii where name='Вася') union (SELECT SUM(`col`) 'n2' FROM akcii where name='Коля')
В результате запроса хотелось бы чтобы составилсь таблица:
n1 n2
сумма для Васи сумма для Коля
а в итоге получается так:
n1
сумма для Васи
сумма для Коля
Не хотелось бы разбивать на несколько запросов, а сделать всё в одном. Пожалуйста, помогите!
Desdechado (2007-01-27 16:52:00) [1]> и от сюда совершенно непонятно, для кого сумма 20, а для кого 30!
Еще как понятно, если последовать совету и выдавать в первую колонку этого "кого". Для таких целей применяется GROUP BY
PS null можно заменить нулем, если есть специальная функция в mysql
Шоломицкий С. А. (2007-01-27 16:26:00) [2]
> Чем
>
> Вася 20
> Коля 30
>
> хуже
>
> Вася Коля
> 20 30
хуже тем, что есть ситуации, когда есть кроме Васи и Коли ещё перцы Дима и Андрей. Так вот, если димы и Андрес ещё нет в таблицы (у них нет акции) то получается так:
20
30
NULL
тоесть 3 записи для четёрёх челове..и от сюда совершенно непонятно, для кого сумма 20, а для кого 30!
Вот в чём траблы!((
sniknik (2007-01-27 10:37:00) [3]сделать наверняка можно, надо смотреть хелп по функциям MySQL или синтаксису... (для iif с помощью которого это можно сделать относится к функциям, для mssql case синтаксическая конструкция, как это в MySQL хз.)
принцип запроса примерно такой (по синтаксису это для аксесс, тебе не подойдет скорее всего)
SELECT Sum(iif(ID=значение ID для Васи, Col, 0)) AS 'n1', Sum(iif(ID=значение для Коли, Col, 0)) AS 'n2' FROM Table
сравнивать можно и по имени конечно, как у тебя, но лучше по значению ключевого поля как показал.
ест и другой подход через PIVOT табле (развернуть группировку), так что и по этому слову можеш покопаться в хелпе MySQL (названия функций/ключевые слова часто одинаковые в различных движках. может и найдеш)
ЮЮ (2007-01-27 07:41:00) [4]
>
> Не хотелось бы разбивать на несколько запросов, а сделать
> всё в одном
Ты в одном и получил.
Какая разница, две записи по одному полю и одна запись в двух полях? Чтобы отобразить в DBGride? Так разбиение на нескольуо запросов этой проблемы тоже не решит. Добавь поле name в выюорку для идентификации для кого же ссума посчитана.
Чем
Вася 20
Коля 30
хуже
Вася Коля
20 30
???