[MySql] Duże zapytanie problem z JOIN

0

Witam użyszkodników :)

Mam mały problem ze stworzeniem zapytania które wyciągnie potrzebne mi dane z kilkunastu tabel. Z zapytaniem męczę się już dość długo wertując google, niestety sam nie potrafię rozwiązać problemu., dlatego liczę na waszą pomoc...

Moje tabele to:

dokumenty_pdf
identyfikatory
p_bb
p_fd
p_k
p_mnz
p_nzoz
p_wn
p_xx
w_bb
w_fd
w_mnz
w_nzoz
w_xx
 

Tabelka identyfikatory zawiera unikalny identyfikator (pole o nazwie identyfikator).

Tabela dokumenty_pdf zawiera nazwy dokumentów pdf oraz id_dokumentu do którego dany plik pdf należy. (pola to id_dokumentu, nazwa_pdf).

Pozostałe tabelki choć trochę różnią się konstrukcjami posiadają wspólne pola takie jak: identyfikator, kod, nadawca i adres.

Oczywiście elementem łączącym ma być sam identyfikator. Moim problemem jest wyciągniecie tych danych. Próbowałem już chyba wszystkich sposobów.

Teraz jestem na etapie takiego zapytania (które coś zwraca w przeciwieństwie do innych):

 
SELECT identyfikatory.identyfikator,
p_bb.kod, p_bb.nadawca, p_bb.adres,
p_fd.kod, p_fd.nadawca, p_fd.adres,
p_k.kod, p_k.nadawca, p_k.adres,
p_mnz.kod, p_mnz.nadawca, p_mnz.adres,
p_nzoz.kod, p_nzoz.nadawca, p_nzoz.adres,
p_wn.kod, p_wn.nadawca, p_wn.adres,
p_xx.kod, p_xx.nadawca, p_xx.adres,
w_bb.kod, w_bb.nadawca, w_bb.adres,
w_fd.kod, w_fd.nadawca, w_fd.adres,
w_mnz.kod, w_mnz.nadawca, w_mnz.adres,
w_nzoz.kod, w_nzoz.nadawca, w_nzoz.adres,
w_xx.kod, w_xx.nadawca, w_xx.adres,
dokumenty_pdf.nazwa_pdf

from identyfikatory
LEFT OUTER JOIN p_bb ON identyfikatory.identyfikator = p_bb.id
LEFT OUTER JOIN p_fd ON identyfikatory.identyfikator = p_fd.id
LEFT OUTER JOIN p_k ON identyfikatory.identyfikator = p_k.id
LEFT OUTER JOIN p_mnz ON identyfikatory.identyfikator = p_mnz.id
LEFT OUTER JOIN p_nzoz ON identyfikatory.identyfikator = p_nzoz.id
LEFT OUTER JOIN p_wn ON identyfikatory.identyfikator = p_wn.id
LEFT OUTER JOIN p_xx ON identyfikatory.identyfikator = p_xx.id

Mam nadzieję że udało mi się wszystko dobrze opisać. Z góry dziękuje za pomoc.

0

Nie napisales w ktorym miejscu jest blad, co stanowi problem?

Przede wszystkim, stosuj aliasy, poniewaz wyciagasz kilka pol, ktorer maja takie same nazwy, tyle, ze znajduja sie w innych tabelach:

p_bb.nadawca AS p_bb_nadawca,
p_fd.nadawca AS p_fd_nadawca
....

joina:

JOIN p_bb ON p_bb.id = identyfikatory.identyfikator
....
0

Błąd jest zapewne logiczny (po mojej stronie), w zasadzie to moje pierwsze podejście do JOINA.

Chodzi mi wyciągnięcie identyfikatora z tabelki identyfikatory i podpięcie do niego dokumentu o takim samym identyfikatorze który może znajdować się w jednej z tabeli:

p_bb
p_fd
p_k
p_mnz
p_nzoz
p_wn
p_xx
w_bb
w_fd
w_mnz
w_nzoz
w_xx

Z tym że jak w identyfikatory.identyfikator = 1, to takie id może znajdować się tylko w jednej z wyżej wymienionych tabel. Kiedy np w tabelce p_bb id =1, to w innych tabelkach nie ma id o takim numerze.

Chcę też podpiąć dokument pdf z tabelki dokumenty_pdf (pole nazwa_zalacznika) gdzie każdy wpis posiada unikalne id tak aby połączyć je z określonym dokumentem.

Wiem ze to zagmatwane.

Chodzi mi konkretnie o uzyskanie czegoś takiego:

|identyfikator|nazwa_zalacznika|kod|nadawca|adres|

I tak wszystkie rekordy (tyle ile jest identyfikatorów):

|identyfikator|nazwa_zalacznika|kod|nadawca|adres|
|1|nazwa_zalacznika|kod|nadawca|adres|
|2|nazwa_zalacznika|kod|nadawca|adres|
|3|nazwa_zalacznika|kod|nadawca|adres|
|4|nazwa_zalacznika|kod|nadawca|adres|
.
.
.
.

Żle wkleiłem zapytanie z pierwszego postu, niestety nie mam możliwości edycji:

SELECT identyfikatory.identyfikator,
p_bb.kod, p_bb.nadawca, p_bb.adres,
p_fd.kod, p_fd.nadawca, p_fd.adres,
p_k.kod, p_k.nadawca, p_k.adres,
p_mnz.kod, p_mnz.nadawca, p_mnz.adres,
p_nzoz.kod, p_nzoz.nadawca, p_nzoz.adres,
p_wn.kod, p_wn.nadawca, p_wn.adres,
p_xx.kod, p_xx.nadawca, p_xx.adres,
w_bb.kod, w_bb.nadawca, w_bb.adres,
w_fd.kod, w_fd.nadawca, w_fd.adres,
w_mnz.kod, w_mnz.nadawca, w_mnz.adres,
w_nzoz.kod, w_nzoz.nadawca, w_nzoz.adres,
w_xx.kod, w_xx.nadawca, w_xx.adres,
dokumenty_pdf.nazwa_pdf

from identyfikatory
LEFT OUTER JOIN p_bb ON identyfikatory.identyfikator = p_bb.id
LEFT OUTER JOIN p_fd ON identyfikatory.identyfikator = p_fd.id
LEFT OUTER JOIN p_k ON identyfikatory.identyfikator = p_k.id
LEFT OUTER JOIN p_mnz ON identyfikatory.identyfikator = p_mnz.id
LEFT OUTER JOIN p_nzoz ON identyfikatory.identyfikator = p_nzoz.id
LEFT OUTER JOIN p_wn ON identyfikatory.identyfikator = p_wn.id
LEFT OUTER JOIN p_xx ON identyfikatory.identyfikator = p_xx.id

LEFT OUTER JOIN w_bb ON identyfikatory.identyfikator = w_bb.id
LEFT OUTER JOIN w_fd ON identyfikatory.identyfikator = w_fd.id
LEFT OUTER JOIN w_mnz ON identyfikatory.identyfikator = w_mnz.id
LEFT OUTER JOIN w_nzoz ON identyfikatory.identyfikator = w_nzoz.id
LEFT OUTER JOIN w_xx ON identyfikatory.identyfikator = w_xx.id
LEFT OUTER JOIN dokumenty_pdf ON identyfikatory.identyfikator = dokumenty_pdf.id_dokumentu

1 użytkowników online, w tym zalogowanych: 0, gości: 1