Поиск

Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торговому номеру

BRAND
Название производителя изделия
NUMBER
Номер изделия
ARL_KIND
Тип номера изделия: 1 или 4 - Неоригинальный, 2 - Торговый, 3 - Оригинальный
ARL_ART_ID
Ключ ART_ID соответствующего изделия
ART_COMPLETE
Название изделия

Используется для уточнения производителя, чтобы дальше искать аналоги уже по конкретному сочетанию: Номер + Производитель.
Здесь на входе и выходе упрощённые варианты номеров (только из букв/цифр - без пробелов/точек/тире и т.п.). По упрощённым номерам искать лучше, т.к. исключаются разные варианты написания номера - сам TecDoc ищет именно так. Вам нужно удалить из искомого номера всё кроме букв/цифр перед использованием этого запроса, либо использовать для этого MySQL-функцию CLEAN_NUMBER (раздел ОПТИМИЗАЦИЯ).
ВНИМАНИЕ: Не забывайте 'одинарные кавычки' при подстановке значений вместо переменной @NUMBER, иначе этот запрос работает ОЧЕНЬ медленно, т.к. не использует текстовый индекс по полю ARL_SEARCH_NUMBER

SET @NUMBER = '1244211212'; /* MERCEDES-BENZ | Тормозной диск */
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
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 ;


Поиск аналогов к любому заданному номеру (оригинальному/неоригинальному/торговому)


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;


Поиск неоригинальных изделий из категории с заданным текстом в названии, подходящих для заданного автомобиля (TYP_ID)

ART_ID
ID изделия
ART_ARTICLE_NR
Номер артикула
STR_DES_TEXT
Название категории
ART_COMPLETE
Название изделия

Пробелы в искомом тексте заменяйте на % и добавляйте также % в начале и конце текста

SET @TYP_ID = 3822; /* ALFA ROMEO 145 (930) 1.4 i.e. [1994/07-1996/12] */
SET @LNG_ID = 16; /* 1 - Немецкий язык; 16 - Русский язык */
SET @QUERY = '%тормозной%диск%';

SELECT ART_ID, ART_ARTICLE_NR, SUP_BRAND, DES_TEXTS.TEX_TEXT AS STR_DES_TEXT, DES_TEXTS2.TEX_TEXT AS ART_COMPLETE
FROM LINK_GA_STR
INNER JOIN LINK_LA_TYP ON LAT_TYP_ID = @TYP_ID AND LAT_GA_ID = LGS_GA_ID
INNER JOIN LINK_ART ON LA_ID = LAT_LA_ID
INNER JOIN SEARCH_TREE ON STR_ID = LGS_STR_ID
INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = STR_DES_ID AND DESIGNATIONS.DES_LNG_ID = @LNG_ID
INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
INNER JOIN ARTICLES ON ART_ID = LA_ART_ID
INNER JOIN SUPPLIERS ON SUP_ID = ART_SUP_ID
INNER JOIN DESIGNATIONS AS DESIGNATIONS2 ON DESIGNATIONS2.DES_ID = ART_COMPLETE_DES_ID
INNER JOIN DES_TEXTS AS DES_TEXTS2 ON DES_TEXTS2.TEX_ID = DESIGNATIONS2.DES_TEX_ID AND DESIGNATIONS2.DES_LNG_ID = @LNG_ID
WHERE DES_TEXTS.TEX_TEXT LIKE @QUERY;