Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Внизпомогите с запросом Найти похожие ветки
← →
Цукор5 (2007-05-24 16:47) [0]Имеем таблицу текущего кол-ва. Запрос выглядит , например так :
select CODE,NAME,QTY from TEMPART.DBF
Также имеется таблица продаж. Данные достаю так :
select CODE,SUM(SALEQTY) from TEMSALE.DBF
where ZREP="0" GROUP BY CODE
Необходимо получить следующее :
CODE,NAME,QTY,SUM(SALEQTY) для всех записей таблицы TEMPART. При этом в таблице TEMSALE данных может вообще не быть...тогда необходиво вывести 0 в SUM(SALEQTY)
В какую сторону смотреть ???
Спасибо !!!
← →
Desdechado © (2007-05-24 16:54) [1]Если комбинация CODE,NAME в TEMPART.DBF уникальна, то можно одним запросом из 2 таблиц с группировкой по CODE,NAME,QTY
← →
Anatoly Podgoretsky © (2007-05-24 17:01) [2]> Цукор5 (24.05.2007 16:47:00) [0]
В сторону соединений (JOIN)
← →
Цукор5 (2007-05-24 19:30) [3]2 Desdechado © (24.05.07 16:54) [1]
>Если комбинация CODE,NAME в TEMPART.DBF уникальна
Да, уникальна. Повторений по полю CODE нет.
← →
Цукор5 (2007-05-24 19:31) [4]2 Цукор5 (24.05.07 19:30) [3]
По полю NAME тоже уникальна.
← →
Desdechado © (2007-05-24 19:37) [5]Ну, и? Получилось?
← →
Цукор5 (2007-05-24 20:13) [6]нет
← →
Loginov Dmitry © (2007-05-24 20:58) [7]А если так:
SELECT tp.CODE, tp.NAME, tp.QTY, sum(ts.SALEQTY)
FROM TEMPART tp
LEFT JOIN TEMSALE ts ON tp.CODE = ts.CODE
WHERE ts.ZREP = "0"
GROUP BY tp.CODE, tp.NAME, tp.QTY
← →
Цукор5 (2007-05-24 22:47) [8]2 Loginov Dmitry © (24.05.07 20:58) [7]
>А если так
Так отображаются товары, у которых были продажи. А мне нужно все отобразить...даже если продаж небыло(т.е. в TEMSALE пусто , например).
З.Ы. Спасибо и за это !!!
← →
Loginov Dmitry © (2007-05-24 23:03) [9]> Так отображаются товары, у которых были продажи. А мне нужно
> все отобразить...даже если продаж небыло(т.е. в TEMSALE
> пусто , например).
Это происходит из-за условия. Удали его.
Либо измени его его так:
WHERE (ts.ZREP = "0") OR (ts.ZREP IS NULL)
← →
Цукор5 (2007-05-24 23:30) [10]А я сделал так :
SELECT tp.CODE, tp.NAME, tp.QTY, sum(ts.SALEQTY)
FROM TEMPART tp
LEFT JOIN TEMSALE ts ON tp.CODE = ts.CODE
WHERE ts.ZREP = "0"
GROUP BY tp.CODE,tp.NAME, tp.QTY
UNION
SELECT tp.CODE, tp.NAME, tp.QTY, 0
FROM TEMPART tp
WHERE tp.CODE NOT IN ( SELECT CODE FROM TEMSALE GROUP BY CODE)
ORDER BY 1
Сейчас посмотрю [9].
Еще раз спасибо !
← →
Цукор5 (2007-05-24 23:39) [11]2 Loginov Dmitry © (24.05.07 23:03) [9]
> Это происходит из-за условия. Удали его.
Да, так получается. Но в DBGrid"е пусто...оно и понятно, ведь null.
Я так понимаю, можно отобразить в гриде нужные мне нули. А как ?
← →
Anatoly Podgoretsky © (2007-05-24 23:40) [12]> Цукор5 (24.05.2007 23:39:11) [11]
OnGetText как минимум
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c