Задать вопрос
@inkyrein
Начинаю постигать WEB-программирование

Как сделать правильно выборку из базы?

Привет всем, подскажите пожалуйста.
Есть не тривиальная таблица
SC_categories
В ней поля:
categoty_ID - айди категории
parent - айди родительской категории.
Все вложенности происходят в рамках одной таблицы - все категории-подкатегории.
Как можно выбрать только последнее звено в категориях - т.е. тот categoty_ID у которой нет детей.
Может быть как то брать categoty_ID только если его нет в parent ?

Например есть категория:
categoty/1282/ - это родитель (categoty_ID = 1282, parent = 0)
categoty/837/ - это дочка 1282 (categoty_ID = 837, parent = 1282)
так как можно сделать выборку всех последних подкатегорий категорий?
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@dredd_krd
SELECT `SC_categories`.* FROM `SC_categories` LEFT JOIN (SELECT DISTINCT(`parent`) FROM `SC_categories`) AS `list` ON (`SC_categories`.`category_ID` = `list`.`parent`) WHERE `list`.`parent` IS NULL

вроде ничего не перепутал..

UPD1:
да, проверил, работает

mysql> select * from `SC_categories`;
+-------------+--------+
| category_ID | parent |
+-------------+--------+
|           1 |      0 |
|           2 |      1 |
|           3 |      2 |
|           4 |      0 |
|           5 |      4 |
|           6 |      2 |
|           7 |      6 |
+-------------+--------+
7 rows in set (0,00 sec)

mysql> SELECT `SC_categories`.* FROM `SC_categories` LEFT JOIN (SELECT DISTINCT(`parent`) FROM `SC_categories`) AS `list` ON (`SC_categories`.`category_ID` = `list`.`parent`) WHERE `list`.`parent` IS NULL;
+-------------+--------+
| category_ID | parent |
+-------------+--------+
|           3 |      2 |
|           5 |      4 |
|           7 |      6 |
+-------------+--------+
3 rows in set (0,00 sec)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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