ART LOOKUP2.sql — различия между версиями
Материал из MstarProject Manual
Mstar (обсуждение | вклад) |
Mstar (обсуждение | вклад) |
||
Строка 40: | Строка 40: | ||
− | + | * Назад к оглавлению: [[Документация_по_запросам_и_структуре_Текдок_-_версия_2]] | |
− | + | ||
+ | * Подробнее о ценах ПО Ирбис на базе текдок от нашей компании: http://www.mstarproject.com/?action=tecdoc_mysql_site |
Текущая версия на 09:57, 13 мая 2013
/* Поиск аналогов (оригинальных/неоригинальных/торговых) к любому заданному номеру (оригинальному/неоригинальному/торговому) */
/* BRAND - Название производителя изделия */
/* NUMBER - Номер изделия */
/* ARL_KIND - Тип номера изделия: 1 - Неоригинальный, 2 - Торговый, 3 - Оригинальный */
/* */
/* Здесь на входе упрощённые варианты номеров, а на выходе уже полные (с пробелами/точками/тире и т.п.) */
/* */
/* ВНИМАНИЕ: Не забывайте 'одинарные кавычки' при подстановке значений вместо переменной @NUMBER,
иначе этот запрос работает ОЧЕНЬ медленно, т.к. не использует текстовый индекс по полю ARL_SEARCH_NUMBER */
SET @NUMBER = '1244211212'; /* Тормозной диск */ SET @BRAND = 'MERCEDES-BENZ';
SELECT DISTINCT IF (ART_LOOKUP2.ARL_KIND = 3, BRANDS2.BRA_BRAND, SUPPLIERS2.SUP_BRAND) AS BRAND, IF (ART_LOOKUP2.ARL_KIND IN (2, 3), ART_LOOKUP2.ARL_DISPLAY_NR, ARTICLES2.ART_ARTICLE_NR) AS NUMBER, ART_LOOKUP2.ARL_KIND FROM ART_LOOKUP LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID INNER JOIN ARTICLES ON ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID INNER JOIN SUPPLIERS ON SUPPLIERS.SUP_ID = ARTICLES.ART_SUP_ID INNER JOIN ART_LOOKUP AS ART_LOOKUP2 FORCE KEY (PRIMARY) ON ART_LOOKUP2.ARL_ART_ID = ART_LOOKUP.ARL_ART_ID LEFT JOIN BRANDS AS BRANDS2 ON BRANDS2.BRA_ID = ART_LOOKUP2.ARL_BRA_ID INNER JOIN ARTICLES AS ARTICLES2 ON ARTICLES2.ART_ID = ART_LOOKUP2.ARL_ART_ID INNER JOIN SUPPLIERS AS SUPPLIERS2 FORCE KEY (PRIMARY) ON SUPPLIERS2.SUP_ID = ARTICLES2.ART_SUP_ID WHERE ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND (ART_LOOKUP.ARL_KIND IN (3, 4) AND BRANDS.BRA_BRAND = @BRAND OR SUPPLIERS.SUP_BRAND = @BRAND) AND (ART_LOOKUP.ARL_KIND, ART_LOOKUP2.ARL_KIND) IN ((1, 1), (1, 2), (1, 3),(2, 1), (2, 2), (2, 3),(3, 1), (3, 2), (3, 3), (4, 1)) ORDER BY BRAND, NUMBER;
- Назад к оглавлению: Документация_по_запросам_и_структуре_Текдок_-_версия_2
- Подробнее о ценах ПО Ирбис на базе текдок от нашей компании: http://www.mstarproject.com/?action=tecdoc_mysql_site