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

Вниз

Нужно сделать сумму запросов из двух таблиц   Найти похожие ветки 

 
GwPlNicker   (2005-12-29 17:14) [0]

Есть 2 таблицы с полями:
таблица Sales
sales_date                     Дата продажи
cod_good                       Код товара
cod_shop                       Код магазина
retail_price                   Отпускная цена за
quantityC                      Количество
quantityF                      Количество
bar_cod                        Баркод
taxnal                         Налог с продаж
av_cost_price                  Учетная цена

и есть таблица Sale_out
cod_shop                       Код магазина
quantity                       Количество            
retail_price                   Отпускная цена        
sales_date                     Дата продажи          
name_out                       Причина                
bar_cod                        Баркод

Нужно подсчитать суммы бпроданного за определенный день
то есть делаю запрос

Select Sales.cod_shop, Sales.Sales_date, Sum(sales.quantityf * sales.retail_price) + Sum(sale_out.quantity * sale_out.retail_price)
FROM     sales, sale_out
WHERE (sales.cod_shops = sale_out.cod_shops)
And (sales.sales_date = sale_out.sales_date)
And (sales.sales_date = 12.27.2005)
Group By sales.cod_shop


Он выдает результат очень далекий от реального
Что может быть
Подскажите кто знает
И кто нить знает как можно использовать 2 DataSet с 1 DBGrid одновременно чтобы отображалась информация с обоих Dataset"ов
У меня Delphi 2k5


 
ANB ©   (2005-12-29 17:28) [1]


> И кто нить знает как можно использовать 2 DataSet с 1 DBGrid

А как это должно в интерфейсе то выглядеть ?

По сабжу - плохо связал таблицы и схватил кортезиан.


 
Johnmen ©   (2005-12-29 17:55) [2]

>Он выдает результат очень далекий от реального
>Что может быть

Конечно. Здесь же соединение двух таблиц, а значит при наличие более одной, соединяемой по условию, записи в каждой таблице получим "умножение" записей.
Напр. в первой 3 записи, во второй 2 записи, после соединения имеем 3*2=6 записей, потом идёт суммирование, причём дубликатов!


 
GwPlNicker   (2005-12-29 18:04) [3]


> Напр. в первой 3 записи, во второй 2 записи, после соединения
> имеем 3*2=6 записей, потом идёт суммирование, причём дубликатов!
>

Так как избавиться от этих дубликатов в данном случае


 
sniknik ©   (2005-12-29 18:17) [4]

надо подобрать такое условие, чтобы по нему одной записи первой таблици соответствовала строго одна из второй (или наоборот ;о).


 
GwPlNicker   (2005-12-30 09:29) [5]


> надо подобрать такое условие, чтобы по нему одной записи
> первой таблици соответствовала строго одна из второй (или
> наоборот ;о)

а как в данном случае можно сделать я просто уже не знаю какое еще условие можно добавить
Методом проб и ошибок пробовал ничего не выходит путного


 
Johnmen ©   (2005-12-30 09:51) [6]

Здесь должна присутствовать третья таблица, справочник магазинов (M) с полем уникального идентификатора (id). Она будет "ведущей" в запросе. А эти таблицы (ссылочные A, B), будут "ведомыми".
Тогда скелет запроса такой:
SELECT
 M.name,
 (SELECT SUM(...) FROM A WHERE A.id=M.id)+
 (SELECT SUM(...) FROM B WHERE B.id=M.id),
FROM M


 
GwPlNicker   (2005-12-30 13:35) [7]

Если запрос такого типа

SELECT     Shops.cod_shop,
                         (SELECT     SUM(sales.quantityf * sales.retail_price)
                           FROM          sales, shops
                           WHERE      (sales.cod_shop = Shops.cod_shops) AND (Sales.sales_date = 12.27 .2005)
                           Group By sales.cod_shop) +
                         (SELECT     SUM(sale_out.quantity * sale_out.retail_price)
                           FROM          sale_out, Shops
                           WHERE      (sale_out.cod_shop = Shops.cod_shops) AND (Sale_out.sales_date = 12.27 .2005)
                           Group By sales.cod_shop)
FROM         Shops

то не проходит

Я использую ОДБЦ дрова для прогресса возможно они не пропускают вложенные запросы


 
Johnmen ©   (2005-12-30 14:33) [8]

Ещё раз внимательней смотри [6].


 
sniknik ©   (2005-12-30 15:19) [9]

не знаю как прогрес с вложенными запросами... но даты в таком виде ODBC точно не пропустит.
плюс групировка предполагает возврат нескольких сумм... что против самой идеи такого подзапроса (что с чем складывать если первый вернет 2 суммы а второй десять? а запись о магазине вообше одна ;о), сам патаешся результат "задвоить" (если на одну запись два результата по второй то... первую надо удваивать чтобы пропустить сие "безобразие"))



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.05 c
15-1139128854
vidiv
2006-02-05 11:40
2006.02.26
Фишка


2-1139723518
Seraphim
2006-02-12 08:51
2006.02.26
Screen


15-1138909912
VseHotjatIJaHo4u
2006-02-02 22:51
2006.02.26
Вождение машины


15-1138878554
Борис Вопрос к разработчикам
2006-02-02 14:09
2006.02.26
Подскажите где найти программиста


15-1139300111
unknown
2006-02-07 11:15
2006.02.26
Платная электронная почта?