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

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
WWWovan
Сообщения: 7
Зарегистрирован: 29 сен 2005, 15:48

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

Сообщение WWWovan » 13 дек 2006, 18:23

Имеется следующий запрос:

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

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
Он выдает для выбраных ответственных менеджеров суммы по накладным для закрепленных за ними клиентов за определенный период.
Нужно доработать таким образом, что если в этот период на закрепленных клиентов накладных не было, то вместо сумм выводятся нули.

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

WWWovan
Сообщения: 7
Зарегистрирован: 29 сен 2005, 15:48

Сообщение WWWovan » 13 дек 2006, 18:59

Ой. Кажется я ошибся разделом. Переместите пожалуйста.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 дек 2006, 21:00

И все сразу догагадались где у тебя накладные и где что. А реализовать это лучше при помощи left join и coalesce.

WWWovan
Сообщения: 7
Зарегистрирован: 29 сен 2005, 15:48

Сообщение WWWovan » 14 дек 2006, 15:16

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

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 14 дек 2006, 15:42

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

WWWovan
Сообщения: 7
Зарегистрирован: 29 сен 2005, 15:48

Сообщение WWWovan » 14 дек 2006, 17:52

Спасибо за участие и coalesce.

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 дек 2006, 18:42

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

Ответить