Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
ВнизNULL в запросе Найти похожие ветки
← →
Спрашивающий (2006-03-20 16:26) [0]Выполняю запрос:
SELECT NAME,SUM(SUM_TOTAL)
FROM CLIENTS
LEFT JOIN CARS ON (CARS.CLIENT_ID=CLIENTS.ID)
GROUP BY NAME
Если клиент не "засветился", то вместо SUM выводится NULL (пусто), а хочется 0 (ноль).
Как исправить?
← →
Ega23 © (2006-03-20 16:27) [1]СУБД вообще-то принято указывать.
В MS SQL - IsNull(SUM(SUM-TOTAL), 0)
← →
MOA © (2006-03-20 16:30) [2]А лучше
SUM(ISNULL(SUM_TOTAL,0))
← →
Спрашивающий (2006-03-20 16:32) [3]Забыл ;) СУБД - Interbase
← →
Ega23 © (2006-03-20 16:37) [4]
> MOA © (20.03.06 16:30) [2]
>
> А лучше
> SUM(ISNULL(SUM_TOTAL,0))
>
И чем лучше?
← →
Спрашивающий (2006-03-20 16:39) [5]Спасибо всем, я нашел. Ключевое слово: COALESCE
COALESCE(ISNULL(SUM_TOTAL),0))
И почему нельзя привести все к одному виду?..
← →
MOA © (2006-03-20 16:56) [6]>И чем лучше?
Если таблица такая:
CLIENT_ID SUM_TOTAL
1 NULL
1 10
Если таких строк не может быть - действительно, одинаково. Однако - бережёного Бог бережёт ;).
← →
kaif © (2006-03-20 17:01) [7]Используй CASE.
SELECT
NAME,
SUM(case when SUM_TOTAL is null then 0 else SUM_TOTAL end)
FROM CLIENTS
LEFT JOIN CARS ON (CARS.CLIENT_ID=CLIENTS.ID)
GROUP BY NAME
← →
Спрашивающий (2006-03-20 17:55) [8]Еще вопрос..
Есть таблица товаров, продаж товаров. Связь такая:
goods.id
|
sold_goods.good_id
sold_goods.sold_id
|
solds.id
solds.sum_total
Необходимо узнать какой товар сколько раз продавался и сколько принес в общем. К тому же в товаре есть поле category_id (т.е. принадлежность категории) и хочется чтобы еще в одном запросе можно было узнать какая категория товаров сколько раз продавалась и сколько дохода принесла.
Делаю вот так:
SELECT categories.name, COUNT(sold_goods.id), SUM(COALESCE(sum_total, 0)) AS sum_total
FROM categories
LEFT JOIN goods ON (goods.category_id = categories.id)
LEFT JOIN sold_goods ON (sold_goods.good_id = goods.id)
LEFT JOIN solds ON (solds.id = sold_goods.sold_id)
GROUP BY categories.name
Этот запрос возвращает только одну запись и считает по ней же..
Объясните пожалуйста что не так?
← →
Спрашивающий (2006-03-20 18:22) [9]Пожалуйста...
← →
kaif © (2006-03-20 18:31) [10]Мне кажется, что эту ветку лучше перенести в Базы Данных.
А категории товарам назначены?
goods.category_id - там есть разнообразие значений более 1?
И честно говоря такая любовь к сплошным LEFT JOIN-ам меня пугает...
← →
Спрашивающий (2006-03-20 18:38) [11]> Мне кажется, что эту ветку лучше перенести в Базы Данных.
Пока писал в Прочем, уже перенесли :) Спасибо
> А категории товарам назначены?
Конечно
> goods.category_id - там есть разнообразие значений более 1?
Не совсем понял вопрос, но попробую ответь: там отношение один-ко-многим. В каждой категории куча товаров, товар принадлежит только одной категории. Много товаров, много категорий :)
> И честно говоря такая любовь к сплошным LEFT JOIN-ам меня пугает...
Буду рад подсказке, как можно по другому...
← →
kaif © (2006-03-20 18:42) [12]Под разнообразием я понимаю вот что.
Допустим у Вас есть куча категорий.
И куча товаров.
Но товары вносились все на одну категорию. Тогда такой запрос и вернет аккурат одну запись.
Запросите
SELECT DISTINCT category_id FROM GOODS.
Если это тоже вернет одну запись, то дело в этом.
← →
Спрашивающий (2006-03-20 18:55) [13]Да, пока забито только 5 товаров в одной категории. Но проведено три продажи, а запрос выводит только последнюю...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c