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