Помогите из нескольких таблиц вытащить суммы
ushen
Дата: 06.07.2009 14:43:32
Ребята помогите
хочу выбрать данные из базы(Оракл) в ДБГрид
Есть таблицы:
Таб1. Клиенты:
Номер клиента
ФИО
таб2. Поставки:
Номер клиента
Сумма поставки
таб3. ПКО:
Номер клиента
Сумма оплаты
Мне нужно выбрать за месяц "Сумму поставки" по клиенту и скалько он оплатил "Сумму оплаты"
Когда я выбираю , у меня сумма получаеться не верная (она какбы увеличивается).
Вот мой запрос:
select таб1.Номер_клиента, таб1.ФИО, sum(таб2.сумму_поставки), sum(таб3.сумма_оплаты)
from таб1, таб2, таб3
where таб2.Дата>='01.01.09'
and таб2.Дата<='31.01.09'
and таб3.строка=1
and таб1.номер_клиента=таб2.номер_клиента
and таб1.номер_клиента=таб3.номер_клиента
group by таб1.Номер_клиента, таб1.ФИО
В чем ошибка
Альт
Дата: 06.07.2009 15:03:47
Так вы без группировки и суммирования выполните этот же свой самый последний запрос, но отсортируйте его по номеру клиента и его фио... и ооооооооооооочень внимательно посмотрите на последний столбец...
зы: оракл умеет between - это я про "таб2.Дата>='01.01.09' and таб2.Дата<='31.01.09'"
зыы: при чем тут вообще Delphi?
RENaissance
Дата: 06.07.2009 15:08:41
Альт |
зыы: при чем тут вообще Delphi?
|
Программа на Delphi! (c)
Posted via ActualForum NNTP Server 1.4
Альт
Дата: 06.07.2009 15:12:49
RENaissance, да я уже в курсе )) вопрос... скорее... риторический )
А если я симпатизирую женщинам с >третьим размером молочных желез... то мне, видимо, надо задавать вопросы по криптографии пышногрудым на women.ru ))
Anatoly Podgoretsky
Дата: 06.07.2009 15:18:00
RENaissance |
Альт | зыы: при чем тут вообще Delphi?
|
Программа на Delphi! (c)
|
Истинная правда!
Альт
Дата: 06.07.2009 20:29:21
Хотя...
почитал... я сам в испуге, что там пишут:
1. Уберите: and таб3.строка=1
2. Замените sum(таб3.сумма_оплаты) на sum( decode( таб3.строка, 1, таб3.сумма_оплаты, 0 ))
или у меня неправильные грибы в час ночи?
Альт
Дата: 06.07.2009 20:33:36
"в пределах одного клиента выполняется декартово произведение"... говорит уважаемый Elic... это важно... жаль, что нет в тексте про возвращаемые, в рамках текущей транзакции, кортежей... чтобы все встало на круги свои ))
RENaissance
Дата: 06.07.2009 22:31:51
Пока автор не даст скрипт таблиц, связей между таблицами, вопрос не будет иметь ответа.
Альт
Дата: 07.07.2009 12:08:56
Ночь мне надо было спать. Если предположить, что у автора на таблице таб3 стоит уникальный индекс по связке "номер_клиента, строка"... то положение исправляется простейшей заменой:
sum(таб3.сумма_оплаты)
на
avg(таб3.сумма_оплаты)
Naf
Дата: 07.07.2009 12:15:45
нет ограничений по датам на третью таблицу, а вообще жестко рекомендовал бы писать JOIN непосредственно в запросе
С уважением, Naf