Ok, jag har verkligen försökt att med hjälp av gamla tipset lösa den här, men huvudvärk är allt jag får! <code> Jag fick följande fråga att funka: Tack för era inlägg!SQL HELL - delberoende Del 2
Säg att jag vill presentera en tabell som delvis består av information från TVÅ andra tabeller beroende på värden i den första tabellen.
Jag har alltså tabellerna:
kunder
kundnamn | ordertypID | leveranstypID |
Åkes Åkeri | 1 | 2 |
Bosses Bar | 2 | 2 |
ordrar
ordertypID | ordertypNamn |
1 | Kreditkort |
2 | Postförskott |
leveranser
ordertypID | leveranstypID | leveranstypNamn |
1 | 1 | FedEx
1 | 2 | UPS
2 | 1 | Snigelpost
2 | 2 | Expressfrakt
Tabellen jag vill få ut ska alltså se ut så här:
Åkes Åkeri | Kreditkort | UPS
Bosses Bar | Postförskott | Expressfrakt
Jag har testat SQL-satser enligt typen:
SELECT kunder.kundnamn, ordrar.ordertypNamn, leveranser.leveranstypNamn
FROM kunder LEFT JOIN ordrar ON kunder.ordertypID = ordrar.ordertypID
FROM kunder LEFT JOIN leveranser ON kunder.leveranstypID =leveranser.leveranstypID
Men får bara syntaxfel!
Jag har grejjat en del med nästlade recordset tidigare för att lösa såna här problem. Men det borde ju gå att göra ett SQL-uttryck som fixar det här, eller?
Hoppas på hjälp/andersSv: SQL HELL - delberoende Del 2
strSQL = "SELECT kunder.kundnamn, ordrar.ordertypNamn, leveranser.leveranstypNamn" & vbCrLf & _
"FROM (ordrar LEFT JOIN kunder ON ordrar.ordertypID = kunder.ordertypID) LEFT JOIN leveranser ON kunder.leveranstypID = leveranser.leveranstypID"
</code>Sv: SQL HELL - delberoende Del 2
<code>
SELECT kunder.kundnamn, ordrar.ordertypNamn, leveranser.leveranstypNamn
FROM kunder INNER JOIN
leveranser ON kunder.leveranstypID = leveranser.leveranstypID INNER JOIN
ordrar ON kunder.ordertypID = ordrar.ordertypID
</code>
Men då fixade jag lite i tabellerna enligt följande:
kunder
kundnamn | ordertypID | leveranstypID |
Åkes Åkeri | 1 | 2 |
Bosses Bar | 2 | 4 |
ordrar
ordertypID | ordertypNamn |
1 | Kreditkort |
2 | Postförskott |
leveranser
ordertypID | leveranstypID | leveranstypNamn |
1 | 1 | FedEx
1 | 2 | UPS
2 | 3 | Snigelpost
2 | 4 | Expressfrakt
MVH
Andreas.NETSv: SQL HELL - delberoende Del 2
Det visade sig (för mig!) att Access och SQL Server hanterar SQL lite olika. Det här är koden som funkar i Access:
<code>
SELECT kunder.kundnamn, ordrar.ordertypNamn, leveranser.leveranstypNamn
FROM (ordrar LEFT JOIN kunder ON ordrar.ordertypID=kunder.ordertypID) LEFT JOIN leveranser ON kunder.leveranstypID=leveranser.leveranstypID
WHERE leveranser.ordertypID=kunder.ordertypID AND leveranser.leveranstypID=kunder.leveranstypID;
</code>
Och så här ser det ut för SQL Server:
<code>
SELECT KUNDER.kundnamn, ORDRAR.ordertypNamn, LEVERANSER.leveranstypNamn
FROM LEVERANSER RIGHT OUTER JOIN
KUNDER ON LEVERANSER.leveranstypID = KUNDER.leveranstypID AND LEVERANSER.ordertypID = KUNDER.ordertypID AND
LEVERANSER.leveranstypID = KUNDER.leveranstypID RIGHT OUTER JOIN
ORDRAR ON KUNDER.ordertypID = ORDRAR.ordertypID
</code>
STORT TACK!!
mvh /anders