Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно написать SQL [D6, XP]


Страницы:   1 2 3

Yurij-7 ©   (2008-02-29 14:14:00) 

Уважаемые мастера, прошу помощи.
Есть табличка:

Город                      Продукт        Состояние
*******                 *********
Город2                    Яблоки          Продано
Город2                    Персик          Везут
Город3                    Персик          Везут
Город4                    Банан            На складе

Хочу получить табличку вида:

Город           Продано        Везут      На складе
****************************************
Город2              1                 1
Город3                                 1
Город4                                              1

Не могу собственно понять как написать запрос, есть таблица справочник городов, и таблица товара, напрашивается чтото на вложенный запрос но не пойму как,  
подскажите пож.

Спасибо.


Johnmen   (2008-02-29 15:44:00) [41]


> Yurij-7   (29.02.08 15:24) [13]
> То: Johnmen ©   (29.02.08 14:53) [9]
> Да, всего есть 5 состояний

Ещё один вопрос - какая версия MySQL?


Johnmen   (2008-02-29 15:42:00) [42]


> palva ©   (29.02.08 15:31) [15]

Не-а :)) Грубо ошибаешься...


palva   (2008-02-29 15:31:00) [43]

Если в таблице имеется уникальное значение ID, то можно так:

SELECT A.GOROD, COUNT(B.SOST), COUNT(C.SOST), COUNT(D.SOST)
FROM TABLE1 A
LEFT JOIN TABLE1 B ON B.ID = A.ID AND B.SOST = 'Продано'
LEFT JOIN TABLE1 C ON C.ID = A.ID AND C.SOST = 'Везут'
LEFT JOIN TABLE1 D ON D.ID = A.ID AND D.SOST = 'На складе'
GROUP BY A.GOROD


Yurij-7   (2008-02-29 15:26:00) [44]

То: Palladin ©   (29.02.08 14:54) [11]

Это я привел пример результирующей выборки, иными словами мне надо такой результат, а 1 это количество продуктов в таком состоянии


Yurij-7   (2008-02-29 15:24:00) [45]

То: Johnmen ©   (29.02.08 14:53) [9]

Да, всего есть 5 состояний
надо просто посчитать любые товары с этими состояниями


Yurij-7   (2008-02-29 15:01:00) [46]

Спасибо за внимание к моему вопросу
Запрос не вычисляемый, база FB, по сути мне надо по каждому городу вывести в разрезе состояний количество продуктов


Palladin   (2008-02-29 14:54:00) [47]


> palva ©   (29.02.08 14:52) [8]

мне кажется 1 это не флаг, а количество таких состояний

любая БД :)
select город, состояние, count(продукт) from табличка group by город, состояние


Сергей М.   (2008-02-29 14:54:00) [48]

Обычный группирующий запрос тут просматривается, ничего из ряда вон выходящего.

А вот выполненять его следует, например, компонентом TDecisionQuery, или аналогичным по назначению кросстаб-компонентом, ориентированном на другую СУБД


Johnmen   (2008-02-29 14:53:00) [49]

Значения и количество "Состояний" неизменно и известно?


palva   (2008-02-29 14:52:00) [50]

Firebird 1.5
SELECT Город, SUM(CASE Состояние WHEN 'Продано' THEN 1 ELSE 0 END),
                    SUM(CASE Состояние WHEN 'Везут' THEN 1 ELSE 0 END),
FROM табличка GROUP BY Город


Palladin   (2008-02-29 14:50:00) [51]

запроса и одного хватит, тебе результат придется обработать и создать и заполнить таблицу самому в RT


korneley   (2008-02-29 14:49:00) [52]


>  но как потом в один набор данных  все слить

Вычисляемые поля?


Yurij-7   (2008-02-29 14:47:00) [53]

Удалено модератором
Примечание: дубль


Yurij-7   (2008-02-29 14:47:00) [54]

да я понимаю, можно по сути 2 запроса сделать, но как потом в один набор данных  все слить ((  вот не могу я этого понять


Palladin   (2008-02-29 14:44:00) [55]

я тоже много чего хочу... твоя хотелка осуществима, но придется написать побольше чем просто один запрос...


Yurij-7   (2008-02-29 14:41:00) [56]

Жаль что не mssql 2005, а My SQL

Просто ен хочется отчет в 3 таблички выносить а хочу в одной и красиво.


Palladin   (2008-02-29 14:17:00) [57]

помнится в юконе появилась новая инструкция pivot, так что если у тебя юкон, он же mssql 2005, то все получится... а может подобная инструкция есть в каких нибудь других СУБД...


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо