Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JOIN 3 Tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
slk500
Próbuje połączyć 3 tabele. Potrafię to zrobić w taki sposób że otrzymuję dane tylko "udanych połączeń" że dany serial.title_pl = video.title_pl.

SELECT serial.title_pl, video.title_pl
FROM serial, video, serial_video
WHERE serial.serial_id = serial_video.serial_id
AND serial_video.video_id = video.video_id

Chciałbym aby wypisał wszystkie title_pl nawet te do któryh nie jest przypisane serial.title_pl czyli z wartościami NULL.

Dziękuje za pomoc bo głowię się nad tym już od wczoraj :/
kapslokk
slk500
Tak widziałem ten diagram, ale on dotyczy dwóch tabel. I nie bardzo mogę przekształcić to na 3 tabele :/

A dobra mam :

SELECT serial.title_pl, video.title_pl
FROM video LEFT OUTER JOIN serial_video ON serial_video.video_id = video.video_id
LEFT OUTER JOIN serial
ON serial.serial_id = serial_video.serial_id

nie sądziłem, że można dwa razy LEFT OUTER JOIN

Ale jednak potrzebuję dalszych modyfikacji :/ Bo otrzymuje taki wynik:

W dwóch kolumnach:

The Cyanide & Happiness Show A Day At The Beach
NULL Amator
Sonic Do Wynajęcia Angry Birds

I ciężko mi teraz to posegregować. Bo mogę posegregować według tytułu odcinka/filmu albo wg. tytułu serialu. A czy można tak zrobić aby dodał tytuł serialu do tytułu odcinka?
kapslokk
concat() łączy wartości.
Poza tym sortować też możesz po kilku kolumnach.
slk500
No tak. Dzięki. Mam już całość biggrin.gif

SELECT CONCAT_WS(': ',serial.title_pl,video.title_pl)
FROM video LEFT OUTER JOIN serial_video ON serial_video.video_id = video.video_id
LEFT OUTER JOIN serial
ON serial.serial_id = serial_video.serial_id
ORDER BY CONCAT_WS(': ',serial.title_pl,video.title_pl)
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.