помогите составить запрос

mixas

Новичок
помогите составить запрос

есть 2 таблицы:
PHP:
CREATE TABLE `cat` (
  `cat_id` int(11) NOT NULL,
  `parent_id` int(11) NOT NULL
)
INSERT INTO `cat` (`cat_id`, `parent_id`) VALUES
(1, 0),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3),
(7, 3),
(8, 4),
(9, 6),
(10, 5),
(11, 7),
(12, 4),
(13, 6),
(14, 5),
(15, 7);


CREATE TABLE `cat_descr` (
  `cat_id` int(11) NOT NULL,
  `cat_name` text NOT NULL
)
INSERT INTO `cat_descr` (`cat_id`, `cat_name`) VALUES 
(1, 'год'),
(2, '2000'),
(3, '2001'),
(4, 'Света'),
(5, 'Таня'),
(6, 'Света'),
(7, 'Таня'),
(8, '69'),
(9, '72'),
(10, '56'),
(11, '59'),
(12, '174'),
(13, '174'),
(14, '162'),
(15, '162');
нужно, чтоб на выходе получилось вот так:
год 2000 Света 69
год 2000 Света 174
год 2000 Таня 56
год 2000 Таня 162
год 2001 Света 72
год 2001 Света 174
год 2001 Таня 59
год 2001 Таня 162

никак не получается такой запрос составить..
 

zerkms

TDD infected
Команда форума
[...]

ну и задачка.... не уверен что это реально в принципе
 

x-yuri

Новичок
Код:
SELECT 'год 2000 Света 69
год 2000 Света 174
год 2000 Таня 56
год 2000 Таня 162
год 2001 Света 72
год 2001 Света 174
год 2001 Таня 59
год 2001 Таня 162'
;-)
ты всегда запросы начинаешь с результата, который хочешь получить? Может лучше словами (в частности для себя) решить, чего ты хочешь?
 

mixas

Новичок
в принципе должно быть реально. если бы структура была не 4х, а 2х уровневая, то решалось бы вот так:

SELECT c2.cat_name, c1.cat_name
FROM cat c
INNER JOIN cat_descr c1 ON c.cat_id = c1.cat_id
INNER JOIN cat_descr c2 ON c.parent_id = c2.cat_id

а с 4мя уровнями не могу разобраться
 

x-yuri

Новичок
а такой вариант не сработает? для 3х
[sql]SELECT cd1.cat_name, cd2.cat_name, cd3.cat_name
FROM cat c1
JOIN cat c2 ON c1.cat_id = c2.parent_id
JOIN cat_descr cd1 ON c1.parent_id = cd1.cat_id
JOIN cat_descr cd2 ON c2.parent_id = cd2.cat_id
JOIN cat_descr cd3 ON c1.cat_id = cd3.cat_id[/sql]
 
Сверху