Я хорошо разбираюсь в подключении таблиц в 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
. Так что я хочу сделать:
uniq='w2d4f6'
1
parent_id=1
Я знаю, что это совершенно неправильно, и я думаю, что я должен использовать JOIN
но я пробовал следующее без успеха.
SELECT folders.label,folders.parent_id FROM folders WHERE folders.uniq='w2d4f6' AND folders.id=folders.parent_id
Чтобы получить детей из папки:
select b.label, b.parent_id
from folders a, folders b
where a.uniq = 'w2d4f6' AND b.parent_id = a.id
Это должно работать, если у вас уже есть родительские данные и вы просто хотите запросить дочерние данные по значению uniq родителя:
SELECT label, parent_id FROM folders WHERE parent_id IN (SELECT id FROM folders WHERE uniq='w2d4f6')