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

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

Спасибо.


palva   (2008-02-29 16:44:00) [21]

> У тебя в запросе сущностная ошибка, не синтаксическая.

Сущностная? Чего-то не понимаю я в этой жизни.


Palladin   (2008-02-29 16:39:00) [22]


> Yurij-7   (29.02.08 16:38) [35]

то есть таблицу сам рисуешь?


Yurij-7   (2008-02-29 16:38:00) [23]

То:Сергей М. ©   (29.02.08 16:07) [24]

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


Johnmen   (2008-02-29 16:32:00) [24]


> ANB   (29.02.08 16:22) [30]

Как ты думаешь, я просто так спрашивал [17]?


Johnmen   (2008-02-29 16:31:00) [25]


> palva ©   (29.02.08 16:17) [28]
> А разве нужно не кривой? Автору важно чтобы работал правильно. У
> меня в запросе где-то ошибка?

Обычно да, ожидается прямой. Т.е. ожидаемый. Он же правильный :)
У тебя в запросе сущностная ошибка, не синтаксическая.


> palva ©   (29.02.08 16:21) [29]

Я же сказал явно - "схема".


Palladin   (2008-02-29 16:27:00) [26]

я такие решения называю: через "там где не светит солнце"
тройная выборка (четверная, пятерная,... икстерная? ) не считая главной


ANB   (2008-02-29 16:24:00) [27]


> ну видимо никто просто не умеет Decision Cube готовить :
> )

Он тут ни на фиг не нужен.


ANB   (2008-02-29 16:22:00) [28]

селект Город_Имя,
 (селект каунт(*) фром Товары Т вере Т.Город = Г.Город энд Т.Состояние = "Везут") "Везут",
 (селект каунт(*) фром Товары Т вере Т.Город = Г.Город энд Т.Состояние = "На складе") "На складе",
 (селект каунт(*) фром Товары Т вере Т.Город = Г.Город энд Т.Состояние = "Воруют") "Воруют"
фром Города Г


palva   (2008-02-29 16:21:00) [29]


> Johnmen ©   (29.02.08 15:59) [21]
> SELECT
>  Город,
>  SUM(IF("Продано",1,0)),

SUM(IF(Состояние = "Продано",1,0)),


palva   (2008-02-29 16:17:00) [30]


> Работать будет. Результат работы будет кривой :)

А разве нужно не кривой? Автору важно чтобы работал правильно. У меня в запросе где-то ошибка?


Сергей М.   (2008-02-29 16:15:00) [31]


> Palladin ©   (29.02.08 16:11) [26]


Научиться-то пара пустяков)
Тут другое тормозит - БДЕ для него вынь да положь)
Но в кач-ве подручного учебного материала оч даже подойдет.


Palladin   (2008-02-29 16:11:00) [32]


> Сергей М. ©   (29.02.08 16:07) [24]

ну видимо никто просто не умеет Decision Cube готовить :)


Johnmen   (2008-02-29 16:09:00) [33]


> palva ©   (29.02.08 16:05) [23]
> [15] должно работать, поскольку все по стандарту.

Работать будет. Результат работы будет кривой :)


Сергей М.   (2008-02-29 16:07:00) [34]

А чем собссно решение [10] смущает/не устраивает ?

Оно же очевидно - если есть готовые компоненты для кросстаб-запросов, почему бы ими не воспользоваться ?


palva   (2008-02-29 16:05:00) [35]

> Тогда вид в [0] получить невозможно никаким, сколь угодно сложным, запросом.
[15] должно работать, поскольку все по стандарту.
Кроме того, в MySQL есть функция IF. [8] можно переписать так: вместо
SUM(CASE Состояние WHEN 'Продано' THEN 1 ELSE 0 END)
написать
SUM(IF(Состояние = 'Продано', 1, 0)


Yurij-7   (2008-02-29 16:00:00) [36]

То: Johnmen ©   (29.02.08 15:55) [20]
Но я же видел подобную реализацию на MS SQL , что же делать?
надо через промежуточную таблицу делать?

подскажите пож как можно реализовать данный отчет


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

...хотя вру :)
Сделав ограничивающее допущение [9], схема запроса примерно такая:
SELECT
 Город,
 SUM(IF("Продано",1,0)),
 SUM(IF("Везут",1,0)),
 ...
FROM Table
GROUP BY Город


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


> Yurij-7   (29.02.08 15:48) [19]

Тогда вид в [0] получить невозможно никаким, сколь угодно сложным, запросом.


Yurij-7   (2008-02-29 15:48:00) [39]

То:Johnmen ©   (29.02.08 15:44) [17]

MySQL - 3.23.37


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

тоесть в данном примере я вижу что справочник выведен в отдельную таблиу ?


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

Наверх

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