Я застрял на этом: я работаю над Joomla!1.6 расширение и использование категорий.
Для тех, кто не использовал категории, они работают следующим образом:
Вы создаете категорию (имя, описание, родительский элемент), и она сохраняется в таблице категорий..
| id | parent_id | lft | rgt | level | etc |
--------------------------------------------------------
| 1 | 0 | - | - | 1 |
| 2 | 1 | - | - | 2 |
id
и parent_id
, мне не нужно объяснять.
level: уровень категории, равный 0 ROOT, поэтому он является потомком rootбудет уровень 1, а потомок уровня один - уровень 2 и т. д.
lft
и rgt
- это значения, используемые для переноса всех подкатегорий категорий (полезно, когда необходимо получить категорию IE уровня 1дети до уровня 2)
В моей таблице есть столбец catid
, который указывает на идентификатор соответствующей категории.
Мне нужно получить всех детей из этой категории, но толькона один уровень ниже,
IE, если мои catid
указывают на категорию уровня 2, мне нужно получить все категории, уровень которых равен 3, и идентификатор их родителя = catid
.запрос?
У меня есть что-то вроде этого (запрос пишетсяn с помощью сценария PHP) /
Давайте попробуем с категорией уровня 1
SELECT *
FROM my_table
WHERE catid = 1
OR catid = (SELECT catid
FROM categories
WHERE level = 2 AND parent_id = 1)
Как я могу сравнить со всеми значениями подзапроса?