LINUX.ORG.RU

Извлечь 14 собак


0

0

Приветствую!
Вот в чём мой вопрос:
Дана таблица:
create table dog (
    dog_id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
    dog_name CHAR(50),
    dog_award CHAR(250),
    dog_cl MEDIUMINT(8) UNSIGNED,
    dog_mref MEDIUMINT(8) UNSIGNED,
    dog_fref MEDIUMINT(8) UNSIGNED,
    dog_amom VARCHAR(100),
    dog_afat VARCHAR(100),
    dog_sex INT,
    dog_chn INT,
    PRIMARY KEY(dog_id)
);

В ней описывается собака, все её параметры (кличка, принадлежность к клубу.. etc)
нас интересуют 2 поля: dog_mref и dog_fref.
Это ссылки на dog_id этой же самой таблицы, которые указывают на папу и маму данной собаки.
Задача: При указании на собаку нужно извлечь также её
папу и маму, у этих мам и пап соответственно их мам и пап, и у них тоже извлечь мам и пап. Таким образом получаем 14 собак -
родственников на одну.
Это называется 3-х коленка.
База работает на MySQL. Как его средствами подобное проделать?
Может, иначе организовать данные, добавить таблиц?
Спасибо.

select dog.dog_name,mother_dog.dog_name,father_dog.dog_name,grand_mother_mom.dog_name.. .. from dog
left join dog as mother_dog on (mother_dog.dog_id=dog.dog_mref)
left join dog as father_dog on (father_dog.dog_id=dog.dog_fref)
left join dog as grand_mother_mom on (mother_dog.dog_mref=grand_mother_mom.dog_id)
.....

И так все осьальные 14 собачек. Идея ясна?

geekkoo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.