Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
3-1142495330
FROSN
2006-03-16 10:48
2006.05.14
переход с D5 на D7 после него база долго грузится.


2-1145644332
Kostafey
2006-04-21 22:32
2006.05.14
Обрашение к биту данных


2-1145751737
parovoZZ
2006-04-23 04:22
2006.05.14
dll и экспортируемые функции


2-1145838896
Bratskiy
2006-04-24 04:34
2006.05.14
Резервное копирование базы данных


2-1146130611
Handle
2006-04-27 13:36
2006.05.14
TreeView