Witam wszystkich.

Potrzebowałem pobrać w jednym zapytaniu dane z dwóch tabel, więc zrobiłem to UNION i tutaj pojawił się problem, ponieważ wrzucając do bazy zapytanie:

  1. $zapytkon = mysql_query("SELECT id, oferta, kolor FROM kolory WHERE oferta = '$id'
  2. UNION ALL SELECT id, oferta, zdjecie FROM zdjecia WHERE oferta = '$id'");


gdzie za $id przyjąłem wartość 3 to otrzymałem coś takiego:

Kod
id     oferta     kolor
1     3     10
2     3     11
1     3     berta.png
2     3     berta1.png


problem w tym, że berta.png i berta1.png nie są kolorem tak jak wskazuje tutaj tabela tylko są zdjęciem, więc przy odczytywaniu kodem:

  1. while($wierszusiek = mysql_fetch_array($zapytkon))
  2. {
  3. $zdjecie = $wierszusiek['zdjecie'];
  4. echo '<li><a href="zdjecia/'.$zdjecie.'" title="'.$wierszusiek['id'].'"><img src="kolory/'.$wierszusiek['kolor'].'.png" alt="'.$wierszusiek['kolor'].'" border="0" /></a></li>';
  5. }


pod zmienną zdjecie otrzymuje Notice, a pod $wierszusiek['kolor'] otrzymuje te wszystkie dane, a ja tego tak nie chcę.
W $wierszusiek['zdjecie'] chciałbym rekordy zdjęć, a w $wierszusiek['kolor'] same kolory, czyli moim mniemaniem w bazie po jakimś zapytaniu chciałbym otrzymać taki wynik:

Kod
id     oferta     kolor
1     3     10
2     3     11


Kod
id     oferta     zdjecie
1     3     berta.png
2     3     berta1.png


Tylko problem jest w tym, że nie wiem jakim JEDNYM zapytaniem takie coś otrzymać.

Proszę o pomoc.
Z góry dziękuje smile.gif

JOIN zadziałał:

Kod
SELECT k.id, k.oferta, k.kolor, z.oferta, z.zdjecie FROM kolory k, zdjecia z WHERE z.id=k.id AND z.oferta = '$id'


To powyżej to jakiś pseudo JOIN. działa, lecz słyszałem, że ten iloczyn kartezjański może wykończyć bazę danych. Jak miałby wyglądać taki JOIN?

Rozwiązanie:

Kod
$zapytkon = mysql_query("SELECT kolory.kolor, kolory.id, zdjecia.id, kolory.oferta, zdjecia.oferta, zdjecia.domyslne, zdjecia.zdjecie
        FROM kolory
        INNER JOIN zdjecia ON kolory.id = zdjecia.id
        WHERE kolory.oferta = '$id' AND zdjecia.oferta = '$id'");