SELECT tytul, opis, r_gra, id_gatunek, data_prem, r_prem, id_gra_firma, r_prodwyd, nazwa FROM dupa_gra LEFT OUTER JOIN `dupa_gra_gatunek` USING ( id_gra ) LEFT OUTER JOIN `dupa_gra_prem` USING ( id_gra ) LEFT OUTER JOIN `dupa_gra_prodwyd` USING ( id_gra ) LEFT OUTER JOIN `dupa_gra_firma` USING ( id_gra_firma )
Wyszukiwanie określonej gry działa dobrze. Jednak mam problemy z wynikami.
Tabele "gra_prem" i "gra_prodwyd" mogą mieć więcej niż jeden wiersz spełniający kryteria łączenia (id_gra). A skoro wynikiem łączenia jest iloczyn kartezjański, to każdy kolejny wiersz w "gra_prem" i "gra_prodwyd" zwielokratnia mi wiersze w wynikach, jednocześnie dublując już wyszukane dane (tytul, opis, id_gatunek).
Pytanie 1: Czy da się tego w jakiś sposób uniknąć?
Pytanie 2: Stwierdziłem, że pobierając dane do wyświetlenia odnośnie jednego obiektu (w tym wypadku gra) lepiej zrobić jedno zapytanie. Ale wolę się upewnić... Czy lepiej dla tych powtarzających się wyników w tych samych tabelach zrobić oddzielne zapytania?
Mam nadzieję, że struktura bazy nie jest potrzebna, ale w razie co wkleję.
Pozdrawiam.