MySQL выборка с использованием parent_id
Простенькая задача: Существует таблица содержащая поля id, title и parent_id. Известно что данные могут быть вложены друг в друга не более чем на два уровня. Необходимо вывести список “детей”, title, которых будет содержать как свой заголовок, так и заголовок родителя.Для начала пример базы:
CREATE TABLE IF NOT EXISTS `tree` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `tree` (`id`, `title`, `parent_id`) VALUES
(1, 'parent1', NULL),
(2, 'parent2', NULL),
(3, 'parent3', NULL),
(4, 'child1', 1),
(5, 'child2', 1),
(6, 'child3', 3);и собственно сам запрос:
SELECT child.id, CONCAT(parent.title, ' - ', child.title) AS title
FROM tree AS child
LEFT JOIN tree As parent
ON child.parent_id = parent.id
WHERE child.parent_id IS NOT NULL
ORDER BY title;Результатом работы которого будет:
+----+------------------+
| id | title |
+----+------------------+
| 4 | parent1 - child1 |
| 5 | parent1 - child2 |
| 6 | parent3 - child3 |
+----+------------------+