![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно написать SQL [D6, XP]
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, то все получится... а может подобная инструкция есть в каких нибудь других СУБД...