Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1142616387
Silver...
2006-03-17 20:26
2006.05.14
Могу ли? Если да то как? Послать определенное сообшение...


15-1145536258
Суслик
2006-04-20 16:30
2006.05.14
Вышел второй update для bds2006


2-1146131742
eclipse
2006-04-27 13:55
2006.05.14
Передача данных между формами


2-1145947700
Phoenix9000
2006-04-25 10:48
2006.05.14
запуск процедуры из другой процедуры


15-1145307696
Дмитрий Белькевич
2006-04-18 01:01
2006.05.14
Купить Delphi7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский