ART LOOKUP.sql — различия между версиями

Материал из MstarProject Manual
Перейти к: навигация, поиск
(Created page with "<nowiki>/* Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торгов...")
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
<nowiki>/* Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торговому номеру. */
+
/* Поиск изделия (от любых производителей) по заданному оригинальному/неоригинальному/торговому номеру. */
 +
 
 
/* Используется для уточнения производителя, чтобы дальше искать аналоги уже по конкретному сочетанию: */
 
/* Используется для уточнения производителя, чтобы дальше искать аналоги уже по конкретному сочетанию: */
 +
 
/* Номер + Производитель */
 
/* Номер + Производитель */
 +
 
/* 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
 +
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 ;
 +
 
 +
* Назад к оглавлению: [[Документация_по_запросам_и_структуре_Текдок_-_версия_2]]
  
SELECT DISTINCT
+
* Подробнее о ценах ПО Ирбис на базе текдок от нашей компании: http://www.mstarproject.com/?action=tecdoc_mysql_site
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
+
;
+
</nowiki>
+

Текущая версия на 10:57, 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 ;