Приветствую!
Вот в чём мой вопрос:
Дана таблица:
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)
.....