Мне нужно написать запрос для выполнения поиска, где все результаты сопоставляются с категорией.
В категориях есть подкатегории, и они работают как вложенная модель набора, и каждый из них имеет lft и rgt-столбец.Запись SQL-запроса с вложенными наборами
Если cat2
, cat3
и cat4
являются Чайлдс из cat1
то их .lft
значения междуcat1.lft
и cat1.rgt
все категории сохраняются в CATEGORIES
таблице и имеют ID
в качестве первичного ключа.
Мне нужна категория ID
найти все элементы на таблице ITEMS
, которые относятся к этой категории, но также и все элементы, относящиеся к подкатегориям категории.
им запрос ищет будет что-то вроде этого
SELECT i.id, i.name
FROM items AS i, categories AS c
WHERE i.category_lft BETWEEN c.given_cat_id_lft AND c.given_cat_id_rgt
, что я имею в виду, я получаю категорией первичный ключ (ID
), но на запрос я должен работать с их РТГ и LTF значения
Должен ли я использовать подзапросы или, возможно, присоединиться? И как должен быть запрос? У меня действительно нет такого опыта в SQL.
Смотрите это [ вопрос] (http://stackoverflow.com/questions/316267/help-with-writing-a-sql-query-for-nested-sets). –
В таблице элементов хранится элемент category_id элемента (как предполагается в ответе ypercube) или его значение category_lft (как подразумевается в примере запроса, заданном в вопросе)? –