Christian M. Nielsen skrev:
> Har du eller andre et godt link til en side der beskriver
> hvordan JOINS virker og hvad de bruges til?
Ikke umiddelbart (men Google har mange hits på "sql join
tutorial").
En bog (evt. blot et hæfte) om databaser kan være en god hjælp her.
Jeg har selv haft glæde af Joakim Dalbys "Databasehåndbogen" der
grundigt og pædagogisk beskriver fundamentale databaseprincipper.
> En forklaring her ville da heller ikke være ad vejen hvis det
> ikke er uoverskueligt at begynde med?
Ganske kort. Et JOIN bruges til at samle data fra flere tabeller.
Det absolut mest almindelige er et INNER JOIN. Det viser data fra
to tabeller hvor joinkriteriet er opfyldt i dem begge. Eksempel:
SELECT *
FROM varer INNER JOIN varegrupper
ON varer.varegruppeID = varegrupper.varegruppeID
Et forespørgsel med INNER JOIN kan også skrives alene ved hjælp af
WHERE. Ovenstående eksempel kan for eksempel skrives således:
SELECT *
FROM varer, varegrupper
WHERE varer.varegruppeID = varegrupper.varegruppeID
Ud fra det sidste eksempel kan man måske se hvordan den almindelige
JOIN-syntaks er bygget op.
Har man brug for at få alle rækkerne fra den ene tabel med kan det
også gøres med et join. Det kaldes så OUTER JOIN - og findes i
varianterne LEFT, RIGHT og FULL. Et LEFT OUTER JOIN (el. bare LEFT
JOIN) vil medtage alle rækker fra den førstnævnte tabel (på venstre
side af operatoren) og parre dem med tilsvarende rækker fra
højresiden hvis de findes, ellers blot med null-værdier. RIGHT
OUTER JOIN tager tilsvarende alle værdier fra højresiden og fylder
ud med null-værdier på venstresiden. Endelig vil en FULL OUTER JOIN
lave udfyldning med null på begge sider.
Af hensyn til oversigten vil jeg kort nævne at der også findes en
såkaldt CROSS JOIN. Det er nu ikke rigtig en join, i det der ikke
er noget joinkriterium. CROSS JOIN svarer til det kartesiske
produkt af to tabeller - det vil sige alle mulige kombinationer af
rækkerne fra tabel 1 og tabel 2. Det er også det samme som at
skrive flere tabelnavne op (adskilt af komma) uden at angive anden
sammenhæng. CROSS JOIN har sjældent nogen praktisk anvendelse.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html