ART LOOKUP.sql — различия между версиями
Mstar (обсуждение | вклад) (Created page with "<nowiki>/* Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торгов...") |
Mstar (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | + | /* Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торговому номеру. */ | |
+ | |||
/* Используется для уточнения производителя, чтобы дальше искать аналоги уже по конкретному сочетанию: */ | /* Используется для уточнения производителя, чтобы дальше искать аналоги уже по конкретному сочетанию: */ | ||
+ | |||
/* Номер + Производитель */ | /* Номер + Производитель */ | ||
+ | |||
/* BRAND - Название производителя изделия */ | /* BRAND - Название производителя изделия */ | ||
+ | |||
/* NUMBER - Номер изделия */ | /* NUMBER - Номер изделия */ | ||
+ | |||
/* ARL_KIND - Тип номера изделия: 1 или 4 - Неоригинальный, 2 - Торговый, 3 - Оригинальный */ | /* ARL_KIND - Тип номера изделия: 1 или 4 - Неоригинальный, 2 - Торговый, 3 - Оригинальный */ | ||
+ | |||
/* ARL_ART_ID - Ключ ART_ID соответствующего неоригинального изделия */ | /* ARL_ART_ID - Ключ ART_ID соответствующего неоригинального изделия */ | ||
+ | |||
/* ART_COMPLETE_DES_TEXT - Название изделия */ | /* ART_COMPLETE_DES_TEXT - Название изделия */ | ||
+ | |||
/* */ | /* */ | ||
+ | |||
/* Здесь на входе и выходе упрощённые варианты номеров (только из букв/цифр - без пробелов/точек/тире и т.п.) */ | /* Здесь на входе и выходе упрощённые варианты номеров (только из букв/цифр - без пробелов/точек/тире и т.п.) */ | ||
+ | |||
/* По упрощённым номерам искать лучше, т.к. исключаются разные варианты написания номера - */ | /* По упрощённым номерам искать лучше, т.к. исключаются разные варианты написания номера - */ | ||
+ | |||
/* сам TecDoc ищет именно так. */ | /* сам TecDoc ищет именно так. */ | ||
+ | |||
/* Вам нужно удалить из искомого номера всё кроме букв/цифр перед использованием этого запроса, | /* Вам нужно удалить из искомого номера всё кроме букв/цифр перед использованием этого запроса, | ||
+ | |||
/* либо использовать для этого MySQL-функцию CLEAN_NUMBER из примера FUNCTIONS.sql. */ | /* либо использовать для этого MySQL-функцию CLEAN_NUMBER из примера FUNCTIONS.sql. */ | ||
+ | |||
/* */ | /* */ | ||
+ | |||
/* ВНИМАНИЕ: Не забывайте 'одинарные кавычки' при подстановке значений вместо переменной @NUMBER, | /* ВНИМАНИЕ: Не забывайте 'одинарные кавычки' при подстановке значений вместо переменной @NUMBER, | ||
иначе этот запрос работает ОЧЕНЬ медленно, т.к. не использует текстовый индекс | иначе этот запрос работает ОЧЕНЬ медленно, т.к. не использует текстовый индекс | ||
по полю ARL_SEARCH_NUMBER */ | по полю ARL_SEARCH_NUMBER */ | ||
− | SET @NUMBER = '1244211212'; /* MERCEDES-BENZ | Тормозной диск */ | + | SET @NUMBER = '1244211212'; /* MERCEDES-BENZ | Тормозной диск */ |
− | /* SET @NUMBER = '52107'; /* DINEX/NRF/PAGID/SPIDAN | Выпускной трубопровод */ | + | /* SET @NUMBER = '52107'; /* DINEX/NRF/PAGID/SPIDAN | Выпускной трубопровод */ |
− | SET @LNG_ID = 16; /* 1 - Немецкий язык; 16 - Русский язык */ | + | SET @LNG_ID = 16; /* 1 - Немецкий язык; 16 - Русский язык */ |
− | SELECT DISTINCT | + | SELECT DISTINCT |
IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS BRAND, | IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS BRAND, | ||
ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER, | ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER, | ||
Строка 28: | Строка 43: | ||
ART_LOOKUP.ARL_ART_ID, | ART_LOOKUP.ARL_ART_ID, | ||
DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT | DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT | ||
− | FROM | + | FROM |
ART_LOOKUP | ART_LOOKUP | ||
LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID | LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID | ||
Строка 35: | Строка 50: | ||
INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID | INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID | ||
INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID | INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID | ||
− | WHERE | + | WHERE |
ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND | ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND | ||
ART_LOOKUP.ARL_KIND IN (1, 2, 3, 4) AND | ART_LOOKUP.ARL_KIND IN (1, 2, 3, 4) AND | ||
DESIGNATIONS.DES_LNG_ID = @LNG_ID | DESIGNATIONS.DES_LNG_ID = @LNG_ID | ||
− | GROUP BY | + | GROUP BY |
BRAND, | BRAND, | ||
NUMBER | NUMBER | ||
− | ; | + | ; |
− | + |
Версия 09:34, 13 мая 2013
/* Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торговому номеру. */
/* Используется для уточнения производителя, чтобы дальше искать аналоги уже по конкретному сочетанию: */
/* Номер + Производитель */
/* BRAND - Название производителя изделия */
/* NUMBER - Номер изделия */
/* ARL_KIND - Тип номера изделия: 1 или 4 - Неоригинальный, 2 - Торговый, 3 - Оригинальный */
/* ARL_ART_ID - Ключ ART_ID соответствующего неоригинального изделия */
/* ART_COMPLETE_DES_TEXT - Название изделия */
/* */
/* Здесь на входе и выходе упрощённые варианты номеров (только из букв/цифр - без пробелов/точек/тире и т.п.) */
/* По упрощённым номерам искать лучше, т.к. исключаются разные варианты написания номера - */
/* сам TecDoc ищет именно так. */
/* Вам нужно удалить из искомого номера всё кроме букв/цифр перед использованием этого запроса,
/* либо использовать для этого MySQL-функцию CLEAN_NUMBER из примера FUNCTIONS.sql. */
/* */
/* ВНИМАНИЕ: Не забывайте 'одинарные кавычки' при подстановке значений вместо переменной @NUMBER,
иначе этот запрос работает ОЧЕНЬ медленно, т.к. не использует текстовый индекс по полю ARL_SEARCH_NUMBER */
SET @NUMBER = '1244211212'; /* MERCEDES-BENZ | Тормозной диск */ /* SET @NUMBER = '52107'; /* DINEX/NRF/PAGID/SPIDAN | Выпускной трубопровод */ SET @LNG_ID = 16; /* 1 - Немецкий язык; 16 - Русский язык */
SELECT DISTINCT
IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS BRAND, ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER, ART_LOOKUP.ARL_KIND, ART_LOOKUP.ARL_ART_ID, DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT
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 DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
WHERE
ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND ART_LOOKUP.ARL_KIND IN (1, 2, 3, 4) AND DESIGNATIONS.DES_LNG_ID = @LNG_ID
GROUP BY
BRAND, NUMBER
;