Страница 1 из 1

Значения по умолчанию среди результатов запроса

Добавлено: 13 дек 2006, 18:23
WWWovan
Имеется следующий запрос:

Код: Выделить всё

select cli.name, manager.name, sum(sellings.amount/opers.rate), sum(sellings.storeprice*sellings.wcount), cli.id
 from clients manager
 join clients cli  on manager.id=cli.manager and cli.manager IN(6509,7508,86,3917)
    left join opers on (cli.ID=opers.CLIENT and opers.optype=80000 and opers.POSTED="T")
        join deals on  opers.DEAL=deals.ID and deals.CLOSED="T" and deals.ENDDATE between "01.08.2006" and "30.08.2006 23:59:59"
            join sellings on opers.id=sellings.opid
 GROUP BY manager.name, cli.name, cli.id
Он выдает для выбраных ответственных менеджеров суммы по накладным для закрепленных за ними клиентов за определенный период.
Нужно доработать таким образом, что если в этот период на закрепленных клиентов накладных не было, то вместо сумм выводятся нули.

Подскажите пожалуста как это лучше реализовать.

Добавлено: 13 дек 2006, 18:59
WWWovan
Ой. Кажется я ошибся разделом. Переместите пожалуйста.

Добавлено: 13 дек 2006, 21:00
Merlin
И все сразу догагадались где у тебя накладные и где что. А реализовать это лучше при помощи left join и coalesce.

Добавлено: 14 дек 2006, 15:16
WWWovan
Merlin писал(а):И все сразу догагадались где у тебя накладные и где что. А реализовать это лучше при помощи left join и coalesce.
Прошу прощения, что сразу не расшифровал.
Информация по накладным находится в opers,
deals - сделки
sellings - позиции в накладной.
clients manager - менеджеры.
clients cli - клиенты менеджеров.

Добавлено: 14 дек 2006, 15:42
Dimitry Sibiryakov
Тебе же уже сказали: используй левые джоины. Правда, я был неправ: первый джоин может быть нормальным, а вот остальные точно должны быть левыми. По крайней мере последний.
В-общем, делай их левыми начиная с конца пока не получишь требуемое.

Добавлено: 14 дек 2006, 17:52
WWWovan
Спасибо за участие и coalesce.

Помогли сформулировать на sql.ru

Добавлено: 14 дек 2006, 18:42
WildSery
WWWovan писал(а):Спасибо за участие и coalesce.
Ты кросс-постами не занимайся. Поверь, тут и там одни и те же люди ходють :wink: