Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1174410706
@!!ex
2007-03-20 20:11
2007.04.15
Интернет заработок.


2-1175009055
Dmitry_177
2007-03-27 19:24
2007.04.15
Помогите перевести TDataTime в SYSTEMTIME без модуля SysUtils


2-1175010566
dzhagr
2007-03-27 19:49
2007.04.15
InterBase


1-1172067206
sia
2007-02-21 17:13
2007.04.15
что находится под курсором мыши?


8-1154954395
ArtemESC
2006-08-07 16:39
2007.04.15
Как считать изображение, находящееся за...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский