Присоединение MySQL результаты из той же таблицы

0

Я хорошо разбираюсь в подключении таблиц в mySQL, но у меня возникают проблемы с присоединением результатов из таблицы SAME. Я создаю структуру папок на PHP, где папка имеет идентификатор, родительский идентификатор, идентификатор случайной строки и ярлык.

Моя БД выглядит так:

| id | parent_id | uniq   | label
---------------------------------
| 1  | 0         | w2d4f6 | dir 1
| 2  | 1         | h9k3h7 | dir 2

Передняя часть использует uniq var для идентификации папки. Итак, в БД вы можете видеть, что если я открою папку dir 1, папка dir 2 будет внутри нее, так как dir 2 имеет идентификатор dir 1 качестве родителя.

Все еще со мной?

|- dir 1
|  + dir 2 

Папка dir 1 идентифицируется своей строкой uniq, поэтому w2d4f6. Так что я хочу сделать:

  1. Получите родительский идентификатор записи с uniq='w2d4f6'
  2. Идентификатор родительского элемента равен 1
  3. Найдите записи, где parent_id=1

Я знаю, что это совершенно неправильно, и я думаю, что я должен использовать JOIN но я пробовал следующее без успеха.

SELECT folders.label,folders.parent_id FROM folders WHERE folders.uniq='w2d4f6' AND folders.id=folders.parent_id

Теги:

2 ответа

2
Лучший ответ

Чтобы получить детей из папки:

select b.label, b.parent_id
from folders a, folders b
where a.uniq = 'w2d4f6' AND b.parent_id = a.id
1

Это должно работать, если у вас уже есть родительские данные и вы просто хотите запросить дочерние данные по значению uniq родителя:

SELECT label, parent_id FROM folders WHERE parent_id IN (SELECT id FROM folders WHERE uniq='w2d4f6')
  • 0
    Я вижу, что код из jspcal дает тот же результат;)
  • 0
    Это выполняет два запроса, хотя?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню