Pobieranie rekordów z powiązaniami - jeden do wielu

0

Potrzebuję wyświetlić np. listę 50 filmów z tabeli "filmy", a obok każdego filmu listę aktorów którzy w nim grali. Aktorzy są przechowywani w tabeli "aktorzy", a relacje w tabeli "film_aktor" - 2 kolumny - id_filmu, id_aktora. Da się to załatwić jednym zapytaniem SQL, czyli lepiej najpierw pobrać wszystkie potrzebne filmy, później relacje tych filmów, a później w pętli aktorów, czy jak? Wiem, że dla małej ilości rekordów użytkownik pewnie nie odczuje różnicy, ale chcę, żeby to działało też dla większej ilości danych. Nie wiem na ile to ważne, ale będę używał PHP.

0

Owszem, da się to załatwić jednym zapytaniem, wyglądałoby ono mniej więcej tak:

SELECT
    F.*, A.*
FROM
    filmy F
    JOIN aktorzy_filmy AF ON AF.film_id = F.id
    JOIN aktorzy A ON A.id = AF.aktor_id

Wtedy w wyniku otrzymasz tabelkę, gdzie w wierszach będą aktorzy i do każdego aktora będzie przyporządkowany film. Da się wtedy w jakiejś pętli obrobić tą tabelę i zbudować właściwe obiekty. Myślę, że w przypadku relacji wiele do wielu jest to najlepsza droga.

[Adam]

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