RocketMedlem sedan feb. 2000353 inlägg
JOIN
Jag kan inte få JOIN att fungera. Jag har skrivit av min bok där det finns ett exempel men det fungerar ändå inte. Kan någon förklara INNER / LEFT / RIGHT JOIN lite enkelt så att man kan få det att fungera.
Raden som inte fungerar:
SELECT sp_records.name FROM sp_records JOIN sp_connection ON sp_records.id = sp_connection.id_record
Felmeddelandet:
You have an error in your SQL syntax near 'ON sp_records.id = sp_connection.id_record' at line 1
LarsGMedlem sedan dec. 200012 465 inlägg
jag ser inget syntaktiskt fel i din fråga, så jag förstår inte att du får det felmeddelande som du får. (Kan det vara något problem med att du anger något felaktigt kolumnnamn eller något sådant.)
Den fråga som du skrivit är en Inner join. Man kan alltså utelämna ordet inner om man vill. Inner join innebär att får tillbaka poster som uppfyller villkoret som ges in ON delen, dvs att värdena i de båda kolumnerna sp_records.id och sp_connection.id_record är lika.
Left join och right join är två varianter av outer join. Outer join innebär att man får alla rader från ena tabellen av de som man joinar mellan. Om man skriver en left join så får man alla poster från den tabell som står till vänster i join-uttrycket och vid en right join så är det den högra tabellen som man tar alla värden ifrån. Man tar alltså alla värden, oavsett
om det finns någon matchande post i den andra tabellen.
Säg att vi har två tabeller A och B
A:
ID
--
1
2
4
B
ID
--
2
3
select a.id,b.id from a left join b on a.id = b.id
ger då resultatet
a.id!b.id
----!----
1...!null
2...!2...
4...!null
select a.id,b.id from a right join b on a.id = b.id
ger då resultatet
a.id!b.id
----!----
2...!2...
null!3
------------------
essentitia preter non sans multiplicandum