Od jakiegoś czasu walczę z problemem dotyczącym rodowodów. A dokładniej tworzę mini aplikację w której posiadam m.in. następujące tabele:
Golab - wszystkie gołębie, nie tylko nasze, ale i na potrzeby rodowodów
GolabNasz - wszystkie gołębie, które są nasze
Rasa - tabela słownikowa
Barwa - tabela słownikowa
Jeśli chodzi o sam inner join z tabelami GolabNasz/Rasa/Barwa - wszystko ładnie śmiga, zero problemów. Cały zamysł niestety kończy mi się w momencie jakiejkolwiek próby odwołania rekurencyjnego w tabeli Golab.
Składa się ona z następujących pól:
ID_Golab
PelnyNumerObraczki
ID_Rasa
ID_Barwa
ID_GolabOjciec
ID_GolabMatka
Rekurencja występuje przy ID_GolabOjciec -> ID_Golab oraz ID_GolabMatka ->ID_Golab.
Chciałbym stworzyć zapytanie, w którym otrzymam połączone zapytanie z inner joinami + PelnyNumerObraczki Matki i PelnyNumerObraczki Ojca. Tylko w jaki sposób to zrobić... Jeśli chodzi o same quadra join to wstępnie wygląda to tak:
Kod
SELECT ID_Golab, PelnyNumerObraczki, Rasa, Barwa, ID_GolabOjciec, ID_GolabMatka, Plec from (Golab
INNER JOIN Rasa ON Rasa.ID_Rasa = Golab.ID_Rasa)
INNER JOIN Barwa ON Barwa.ID_Barwa = Golab.ID_Barwa
INNER JOIN GolabNasz ON Golab.ID_Golab = GolabNasz.ID_GolabNasz
INNER JOIN Plec ON Plec.ID_Plec = GolabNasz.ID_Plec
INNER JOIN Rasa ON Rasa.ID_Rasa = Golab.ID_Rasa)
INNER JOIN Barwa ON Barwa.ID_Barwa = Golab.ID_Barwa
INNER JOIN GolabNasz ON Golab.ID_Golab = GolabNasz.ID_GolabNasz
INNER JOIN Plec ON Plec.ID_Plec = GolabNasz.ID_Plec
Kod
SELECT ID_Golab, PelnyNumerObraczki, Rasa, Barwa, ID_GolabOjciec, ID_GolabMatka, Linia, Plec
FROM Rasa, Barwa, GolabNasz, Golab, Plec
WHERE Rasa.ID_Rasa=Golab.ID_Rasa AND Barwa.ID_Barwa = Golab.ID_Barwa AND GolabNasz.ID_GolabNasz = Golab.ID_Golab AND Plec.ID_Plec = GolabNasz.ID_Plec
Jeszcze muszę uzupełnić resztę danych z tabeli GolabNasz, ale to już są zmiany kosmetyczne - Prawdziwy problem to ta rekurencja by możnabyło wypisać NumerObrączki ojca i matki ... jakieś sugestie ?