Текущий архив: 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