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

Материал из MstarProject Manual
Перейти к: навигация, поиск
 
Строка 26: Строка 26:
 
/* DESCENDANTS - Есть ли у этой категории подкатегории: 1 - Есть, 0 - Нет */
 
/* DESCENDANTS - Есть ли у этой категории подкатегории: 1 - Есть, 0 - Нет */
  
SELECT STR_ID, TEX_TEXT AS STR_DES_TEXT, IF( EXISTS(
+
SELECT
 +
STR_ID,
 +
TEX_TEXT AS STR_DES_TEXT,
 +
IF(
 +
EXISTS(
 
SELECT
 
SELECT
 
*
 
*
Строка 36: Строка 40:
 
1
 
1
 
), 1, 0) AS DESCENDANTS
 
), 1, 0) AS DESCENDANTS
FROM SEARCH_TREE
+
FROM
INNER JOIN DESIGNATIONS ON DES_ID = STR_DES_ID
+
          SEARCH_TREE
INNER JOIN DES_TEXTS ON TEX_ID = DES_TEX_ID
+
INNER JOIN DESIGNATIONS ON DES_ID = STR_DES_ID
WHERE STR_ID_PARENT <=> @STR_ID AND DES_LNG_ID = @LNG_ID AND EXISTS ( SELECT * 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 WHERE LGS_STR_ID = STR_ID LIMIT 1 ) ;
+
INNER JOIN DES_TEXTS ON TEX_ID = DES_TEX_ID
 
+
WHERE
 
+
STR_ID_PARENT <=> @STR_ID AND
 +
DES_LNG_ID = @LNG_ID AND
 +
EXISTS (
 +
SELECT
 +
*
 +
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
 +
WHERE
 +
LGS_STR_ID = STR_ID
 +
LIMIT
 +
1
 +
)
 +
;
  
 
* Назад к оглавлению: [[Документация_по_запросам_и_структуре_Текдок_-_версия_2]]
 
* Назад к оглавлению: [[Документация_по_запросам_и_структуре_Текдок_-_версия_2]]
  
 
* Подробнее о ценах ПО Ирбис на базе текдок от нашей компании: http://www.mstarproject.com/?action=tecdoc_mysql_site
 
* Подробнее о ценах ПО Ирбис на базе текдок от нашей компании: http://www.mstarproject.com/?action=tecdoc_mysql_site

Текущая версия на 10:08, 13 мая 2013

/* Построение дерева категорий изделий для заданного типа автомобиля (TYP_ID) */

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

/* Последовательно устанавливая следующие значения STR_ID, можно получить ещё 4 уровня дерева: */

/* SET @STR_ID = 10001; /* Легковые автомобили */

/* SET @STR_ID = 10102; /* Двигатель */

/* SET @STR_ID = 10615; /* Кривошатунный механизм */

/* SET @STR_ID = 10620; /* Поршень */


/* Вывод списка подкатегорий для выбранной категории с номером @STR_ID,*/

/* содержащие изделия для заданного типа автомобиля (TYP_ID) */

/* STR_ID - Номер категории */

/* STR_DES_TEXT - Название категории */

/* DESCENDANTS - Есть ли у этой категории подкатегории: 1 - Есть, 0 - Нет */

SELECT STR_ID, TEX_TEXT AS STR_DES_TEXT, IF( EXISTS( SELECT * FROM SEARCH_TREE AS SEARCH_TREE2 WHERE SEARCH_TREE2.STR_ID_PARENT <=> SEARCH_TREE.STR_ID LIMIT 1 ), 1, 0) AS DESCENDANTS FROM SEARCH_TREE INNER JOIN DESIGNATIONS ON DES_ID = STR_DES_ID INNER JOIN DES_TEXTS ON TEX_ID = DES_TEX_ID WHERE STR_ID_PARENT <=> @STR_ID AND DES_LNG_ID = @LNG_ID AND EXISTS ( SELECT * 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 WHERE LGS_STR_ID = STR_ID LIMIT 1 )