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:
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
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:
{ $zdjecie = $wierszusiek['zdjecie']; echo '<li><a href="zdjecia/'.$zdjecie.'" title="'.$wierszusiek['id'].'"><img src="kolory/'.$wierszusiek['kolor'].'.png" alt="'.$wierszusiek['kolor'].'" border="0" /></a></li>'; }
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
1 3 10
2 3 11
Kod
id oferta zdjecie
1 3 berta.png
2 3 berta1.png
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

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'");
FROM kolory
INNER JOIN zdjecia ON kolory.id = zdjecia.id
WHERE kolory.oferta = '$id' AND zdjecia.oferta = '$id'");