Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1177080291
DelphiLexx
2007-04-20 18:44
2007.06.17
Frame - как переопределить метод


11-1161719636
_Ламер_
2006-10-24 23:53
2007.06.17
EditBox почернел


2-1180339504
Vin
2007-05-28 12:05
2007.06.17
Результаты вычисляемых полей из Table выгрузить в .dbf файл


1-1176996961
Dmitry_177
2007-04-19 19:36
2007.06.17
Копия запущенной программы


2-1180116559
programmist87
2007-05-25 22:09
2007.06.17
Кэш и Cookie





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский