Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pobieranie danych z 3ch tabel jednocześnie
Forum PHP.pl > Forum > Bazy danych > MySQL
anonim1133
Witam, mam 3 tabele: postacie, konta, news.
Chcę pobrać news.* i postacie.name, w jednym zapytaniu.

`news`.`id_konta`=`konta.id`
`konta`.`glowna_postac`=`postacie.id`

Da się to zrobić z join ? ja jedynie potrafiłem pobrać dane tylko z jednej tabeli jednocześnie.

Mając takie zapytanie:
  1. SELECT news.*,postacie.name FROM news,konta,players `news`.`id_konta`=`konta.id` AND `konta`.`glowna_postac`=`postacie.id

pobiera mi ( chyba ) wszystkie rekordy, ze wszystkich tabel.

Jednak czy nie powinno się robić tego JOIN`em? czy JOIN nie będzie wydajniejszy ?

Z góry dzięki za odpowiedzi
artur_dziocha
zainteresuj sie JOIN
było na forum. Szukaj a znajdziesz
anonim1133
Kiedy właśnie interesowałem się, ale nie potrafię połączyć tego tak, aby pobrać potrzebne mi dane. A manual mysql, jest dla mnie jakąś czarną magią. Jedyne do czego doszedłem, to ( jak wyżej wspomniałem ) połączenie tych tabel, ale mogę pobrać albo postacie.* albo news.*
EarthCitizen
  1. SELECT news . * , postacie.name
  2. FROM news LEFT JOIN konta ON news.id_konta = konta.id
  3. LEFT JOIN postacie ON konta.glowna_postac = postacie.id
anonim1133
Dzięki EarthCitizen, działa jak trzeba.

Tworzyłem niemalże identyczne zapytania(różniły się chyba tylko kolejnością tabel do jakich się odwoływałem) i jedyne co dostawałem, to wyniki z jednej tabeli, i masę pustych wyników z drugiej...
ucho
Nie wiem jak w innych bazach ale w Postgresie inner joiny są identyczne pod każdym względem (także wydajnościowym) z składnią FROM ... WHERE . Zaś o ile nie zakładasz istnienia newsów pisanych przez osoby które nie mają konta lub postaci to powinien być to właśnie inner join a nie outer left.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.