[MS SQL] Rekurencja + quadra inner join |
[MS SQL] Rekurencja + quadra inner join |
2.02.2013, 16:03:39
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 2.02.2013 Ostrzeżenie: (0%) |
Witam!
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 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 ? |
|
|
3.02.2013, 17:32:43
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Jaki problem?
|
|
|
7.02.2013, 14:10:05
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 2.02.2013 Ostrzeżenie: (0%) |
Dzięki za podpowiedź Twoje rozwiązanie nie działało w pełni ze względu na INNER JOIN`y zamiast LEFT JOIN i małe błędy w nazwach tabel, ale i tak pozwoliło mi to na ogarnięcie tematu Jeszcze raz z góry dziękuję!
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.05.2024 - 17:20 |