select z wielu tabel

0

Witam, ostatnio zająłem się trochę bazami danych i ma taki problem:
Są 3 tabele (oczywiscie tak obrazowo, w rzeczywistosci są trochę bardziej rozbudowane)

naprawy
id_naprawy
id_klienta
id_podzespolu

klienci
id_klienta,
imie,
nazwisko

podzespoly
id_podzespolu
model
producent

I dane te chciałbym teraz przedstawić w jednej tabeli tzn żeby mieć takie kolumny:
id_naprawy imie nazwisko model producent

napisałem sobie taki kod

        $sql1=(zapytanie);

	$zaw1=mysql_query($sql1);
	while ($row1 = mysql_fetch_row($zaw1)) {
		echo" <tr>
		<td>".$row1[0]."</td>
		<td>".$row1[1]."</td>
		<td>".$row1[2]."</td>
		<td>".$row1[3]."</td>
                <td>".$row1[4]."</td>
               </tr> 

I jak teraz skonstruować to zapytanie sql żeby tak wyświetlić te dane z trzech tabel? Znalazlem przykład z użyciem "where" ale dla dwóch tabel a z trzema nie za bardzo wiem jak to napisać... Byłbym wdzięczny za pomoc

0
SELECT id_naprawy, imie, nazwisko, model, producent from naprawy
INNER JOIN klienci ON naprawy.id_klienta = klienci.id_klienta
INNER JOIN klienci ON naprawy.id_podzespolu = podzespoly.id_podzespolu
0

Dokładnie o to mi chodziło, a z taką konstrukcją jeszcze się nie spotkałem, tylko jeszcze trzeba poprawić w trzeciej linijce zamiast klienci musi być podzespoly i wtedy śmiga elegancko

0
początkujący napisał(a)

a z taką konstrukcją jeszcze się nie spotkałem
to weź się za podstawy podstaw SQLa to się spotkasz

0

@początkujący myślę, że faktycznie wypadało by poświęcić kilka godzin na naukę sqla, łączenie tabel to jedna z podstaw
@Misiekd
oj tam, ja tych inner joinów, left joinów nie ogarniam do dziś, mimo, że pracuję jako programista oracla od 2 lat.
Jakoś dalej stare where jest dla mnie bardziej intuicyjne... jest w ogóle sens się tego (JOIN) uczyć? :P

0

@up - OMG. Jest sens. Join nie służy do tego samego co where. Nie każde zapytanie zawierające join da się przepisać na where. A nawet jeśli się da, to wychodzą z tego niesamowicie pokraczne, wielopoziomowe instrukcje - podczas gdy to samo joinem można zrobić prosto i elegancko.
Trzeba wiedzieć co do czego jest i tyle.

0

@aurel w oracle zapis left join itp są dopiero od 11G :) - wcześniej pisało się where x.id = y.id(+) i to oznaczało właśnie x left join y on x.id = y.id więc może po prostu void-tec nie wie, że ich używa

0

Ja wychodzę z założenia, że wszystko co jawne jest czytelniejsze - bo bardziej rzuca się w oczy. Dlatego też zawsze używam jawnych joinów, a nie tych impilict.

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