webForumDet fria alternativet

En join på tre tabeller

3 svar · 694 visningar · startad av Troxy

TroxyMedlem sedan mars 20041 505 inlägg
#1

Hallå,
jag sitter och skriver SQL-frågor med SQL Server 2000 mot en helt idiotisk tabellstruktur. x(

* Tabell1: är ett produktregister.
* Tabell2: är ett artikelregister som innehåller artiklar för varje produkt (alltså en relation mellan tabell1 och tabell2).
* Tabell3: är också ett separat artikelregister, strukturmässigt identisk med tabell2.

Nu vill jag lista alla artiklar ur tabell2 och tabell3, tillsammans med sin produkt.
En join mellan tre tabeller alltså.
Hur löser jag detta?

Tacksam för svar!

TravoniMedlem sedan okt. 20041 556 inlägg
#2
SELECT t1.produktnamn,t2.artikelnamn,t3.artikelnamn FROM Tabell1 t1
INNER JOIN Tabell2 t2 ON t1.id = t2.t1id
INNER JOIN Tabell3 t3 ON t1.id = t3.t1id

...kanske.
Om det finns artiklar ifrån både t2 och t3 som har en produkt i annat fall måste du använda left join.

LarsGMedlem sedan dec. 200012 464 inlägg
#3
SELECT t1.produktnamn,t2.artikelnamn
   FROM Tabell1 t1
INNER JOIN Tabell2 t2 ON t1.id = t2.t1id
union all
select t1.produktnamn,t2.artikelnamn
   FROM Tabell1 t1
INNER JOIN Tabell3 t2 ON t1.id = t2.t1id
order by produktnamn
TroxyMedlem sedan mars 20041 505 inlägg
#4

Tack så mycket, union får bli lösningen. :

123 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)