Форум: "Базы";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
ВнизФормирование запроса Найти похожие ветки
← →
Шоломицкий С. А. (2007-01-27 02:46) [0]Прошу помочь в составлении запроса.
Имеется одна таблица, в ней есть поля "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
сумма для Васи
сумма для Коля
Не хотелось бы разбивать на несколько запросов, а сделать всё в одном. Пожалуйста, помогите!
← →
ЮЮ © (2007-01-27 07:41) [1]
>
> Не хотелось бы разбивать на несколько запросов, а сделать
> всё в одном
Ты в одном и получил.
Какая разница, две записи по одному полю и одна запись в двух полях? Чтобы отобразить в DBGride? Так разбиение на нескольуо запросов этой проблемы тоже не решит. Добавь поле name в выюорку для идентификации для кого же ссума посчитана.
Чем
Вася 20
Коля 30
хуже
Вася Коля
20 30
???
← →
sniknik © (2007-01-27 10:37) [2]сделать наверняка можно, надо смотреть хелп по функциям 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 16:26) [3]
> Чем
>
> Вася 20
> Коля 30
>
> хуже
>
> Вася Коля
> 20 30
хуже тем, что есть ситуации, когда есть кроме Васи и Коли ещё перцы Дима и Андрей. Так вот, если димы и Андрес ещё нет в таблицы (у них нет акции) то получается так:
20
30
NULL
тоесть 3 записи для четёрёх челове..и от сюда совершенно непонятно, для кого сумма 20, а для кого 30!
Вот в чём траблы!((
← →
Desdechado © (2007-01-27 16:52) [4]> и от сюда совершенно непонятно, для кого сумма 20, а для кого 30!
Еще как понятно, если последовать совету и выдавать в первую колонку этого "кого". Для таких целей применяется GROUP BY
PS null можно заменить нулем, если есть специальная функция в mysql
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c