ogregor
@ogregor
арендатор vpn сервера debian

Как сделать выборку всех категорий нижнего уровня в дереве категорий?

Здравствуйте есть БД. psioner.com/myadmin usr: test pass: test, (выйдет ошибка после обращения, замените https:// на http:// прямо в строке с сохранением полного пути)
Забуксовал на тестовом вопросе:
3. На выборку всех категорий нижнего уровня ( т.е. не имеющих детей)

Сделал следующий запрос: SELECT DISTINCT * FROM `category` WHERE 1 GROUP BY `parent_category_id` Вывело список полей:
17-3
11-2
9-5
5-1
13-3
Но этого недостаточно,нужен запрос, который бы исключал еще и значения 1 столбца, встречающиеся во 2 (В данном случае это минус: 5-1 и 13-3, так как у них есть потомки.)
Прошу помощи!
  • Вопрос задан
  • 1146 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В JOIN'ах вся сила!
SELECT `cat`.`id`, `cat`.`name`
    FROM `category` AS `cat`
    LEFT JOIN (
        SELECT DISTINCT `parent_category_id` AS `parent`
            FROM `category`
    ) AS `sub` ON `cat`.`id` = `sub`.`parent`
    WHERE `sub`.`parent` IS NULL

Но вообще, с деревом удобнее работать через Nested Set
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы