Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Супермаг. Запрос на вывод карточек, поставщиков и мест хранения. : Oracle

27.04.2024 1:33


26.07.2013 10:34
Ринат
 
Добрый день, сделал запрос:
Цитата:
SELECT
SACARDCLASS.NAME AS "Группа", FFMAPREP.ARTICLE AS "Артикул", SMCARDPROPERTIES.PROPVAL AS "Артикул TH", SMCARD.NAME AS "Наименование", SUM(FFMAPREP.INCOMEQ) AS "Количество", SUM(FFMAPREP.INCOMESUM) AS "Сумма", SMCLIENTINFO.NAME AS "Поставщик", SMSTORELOCATIONS.NAME AS "Магазин"
FROM
SMCARD
Inner Join FFMAPREP ON
SMCARD.ARTICLE = FFMAPREP.ARTICLE
Inner Join SMSTORELOCATIONS ON
FFMAPREP.SALELOCATIONTO = SMSTORELOCATIONS.ID
Inner Join SMCLIENTINFO ON
FFMAPREP.INCOMECLIENTINDEX = SMCLIENTINFO.ID
Inner Join SACARDCLASS ON
SMCARD.IDCLASS = SACARDCLASS.ID
Inner Join SACARDCLASS SACARDCLASS_1 ON
SMCARD.IDCLASS = SACARDCLASS_1.ID
Inner Join SMCARDPROPERTIES ON
SMCARDPROPERTIES.ARTICLE = SMCARD.ARTICLE
WHERE
FFMAPREP.SALETYPE = 'WI' and FFMAPREP.INCOMETYPE = 'WI' and FFMAPREP.INCOMEDATE between to_date('01-06-2013', 'dd-mm-yyyy') and to_date('30-06-2013', 'dd-mm-yyyy') and SMCARDPROPERTIES.PROPID = 'Trade.House.id'
GROUP BY
FFMAPREP.ARTICLE, FFMAPREP.SALELOCATIONTO, FFMAPREP.INCOMECLIENTINDEX, FFMAPREP.ARTICLE, SMCARD.NAME, SMSTORELOCATIONS.ID, SMCARD.NAME, SMCLIENTINFO.ID, SMCARD.NAME, SMCLIENTINFO.NAME, SMSTORELOCATIONS.NAME, SACARDCLASS.NAME, SMCARDPROPERTIES.PROPVAL
ORDER BY
"Артикул", "Группа", "Магазин"
Все работает, но понадобилось добавить характеристику из описания товара. Проблема в том что не у каждого товара она есть, а как сделать чтобы не отсеивались карточки без этой характеристики, я пока не знаю...
26.07.2013 10:37
OlegON
 
Про Inner Join знаем, а про Outer join нет? :)
26.07.2013 10:40
Ринат
 
Увы нет, учусь только... про inner Join и то случайно узнал, сначала все делал через where, вот только в итоге запрос выдавал фигню всякую...))) Спасибо за направление!
26.07.2013 10:54
konst
 
можно еще вот так попробовать
в первый селект добавить

NVL ((SELECT x.propval
FROM supermag.smcardproperties x
WHERE a.article = x.article AND x.propid = 'Sys.Producer'),
'-') prod,
где Sys.Producer - название доп характеристики...
если доп характеристики нет - будет выведен - "-" (можно любое значение поставить)
26.07.2013 11:31
Ринат
 
Спасибо, вот что получилось:

Цитата:
SELECT
SACARDCLASS.NAME AS "Группа", FFMAPREP.ARTICLE AS "Артикул", SMCARDPROPERTIES.PROPVAL AS "Артикул TH", replace (SMCARD.NAME, chr(9),' ') AS "Наименование", SUM(FFMAPREP.INCOMEQ) AS "Количество", SUM(FFMAPREP.INCOMESUM) AS "Сумма", SMCLIENTINFO.NAME AS "Поставщик", SMSTORELOCATIONS.NAME AS "Магазин"
FROM
SMCARD
Inner Join FFMAPREP ON
SMCARD.ARTICLE = FFMAPREP.ARTICLE
Inner Join SMSTORELOCATIONS ON
FFMAPREP.SALELOCATIONTO = SMSTORELOCATIONS.ID
Inner Join SMCLIENTINFO ON
FFMAPREP.INCOMECLIENTINDEX = SMCLIENTINFO.ID
Inner Join SACARDCLASS ON
SMCARD.IDCLASS = SACARDCLASS.ID
Inner Join SACARDCLASS SACARDCLASS_1 ON
SMCARD.IDCLASS = SACARDCLASS_1.ID
LEFT outer Join SMCARDPROPERTIES ON
SMCARDPROPERTIES.ARTICLE = SMCARD.ARTICLE and SMCARDPROPERTIES.PROPID = 'Trade.House.id'
WHERE
FFMAPREP.SALETYPE = 'WI' and FFMAPREP.INCOMETYPE = 'WI' and FFMAPREP.INCOMEDATE between to_date('01-06-2013', 'dd-mm-yyyy') and to_date('30-06-2013', 'dd-mm-yyyy')
GROUP BY
FFMAPREP.ARTICLE, FFMAPREP.SALELOCATIONTO, FFMAPREP.INCOMECLIENTINDEX, FFMAPREP.ARTICLE, SMCARD.NAME, SMSTORELOCATIONS.ID, SMCARD.NAME, SMCLIENTINFO.ID, SMCARD.NAME, SMCLIENTINFO.NAME, SMSTORELOCATIONS.NAME, SACARDCLASS.name, SMCARDPROPERTIES.PROPVAL
ORDER BY
"Артикул", "Группа", "Магазин"
Только ведущие нули у артикула убрались...
26.07.2013 11:40
OlegON
 
Куда это они убрались? У эксля? Сделай поле текстовым, а не числовым.
26.07.2013 11:47
Ринат
 
Да делал, но не правильно, фиг с ними разобрался уже с нулями, запрос неправильным получился, он исключает из результата карточки в которых хранятся другие характеристики....
Часовой пояс GMT +3, время: 01:33.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.