"Steffen Møller" <steffen.moeller@mail.com> wrote in message
news:3a9c6t0ie64didnmlak1jql9k72j5v5eh3@4ax.com...
> okay, men hvad er en join condition?
Det er en beskrivelse af hvordan to tabeller hænger sammen. Det vil sige
hvilke to kolonner skal SQL-processoren bruge til at kæde rækker i den ene
tabel sammen med rækker i den anden tabel.
Hvis jeg nu har en tabel med forfattere og en med bøger som neden for :
Tabel Forfattere
id ! Navn
-----------
1 Ron Soukup
2 Steve McConnel
Tabel Boeger
ForfatterId ! Navn
-------------------
1 Inside SQL Server
2 Code Complete
2 Rapid Development
Ønsker jeg nu at se hvilke bøger som Steve McConnel har skrevet ville jeg
lave et select-statement som følger :
SELECT b.Navn FROM forfattere as f INNER JOIN boeger as b on (f.id =
b.ForfatterId) WHERE f.Navn = 'Steve McConnel'
Dette vil resultere i en liste med
Navn
-----------------
Code Complete
Rapid Development
Som du kan se er det vigtigt at der er en kolonne i hver tabel som kan
bruges til at beskrive sammenhængen. Bemærk også at det oftest er en god ide
at lave alias (fx forfattere as f, hvor f bliver alias for tabelnavnet
forfattere) da du skal kunne skilde kolonne navne i flere tabeller fra
hinanden, hvilket gøres ved at prefixe med tabelnavn eller aliasnavn som
oftest er noget lettere at skrive.
> Jeg kiggede også på det link som
> Peter Lykkegaard var kommet med, og der ligner join conditionen mere
> noget taget fra WHERE clausen. Jeg har fået sqltut fra
>
http://w3.one.net/~jhoffman/sqltut.htm, men join sektionen er ikke
> noget værd. Det ser ellers ud til at join er ret vigtig..
Man kan i de fleste SQL-server produkter godt join i where clausen, det skal
du bare vide er sådan så du kan læse "gammel" kode. Du skal dog holde dig
fra den teknik da den ikke er særlig klar i sit udtryk og samtidigt har
nogle problemer i forbindelse med bestemte udtryk (du kan fx ikke right
eller left joine med en betingelse som ikke er equal, hvis det er noget som
du gerne vil grave lidt mere i kan du finde det i bogen : Joe Celko's SQL
for smarties).
Jeg prøvede lige at lure på de tabeller som du havde vedlagt i den første
post og jeg kunne ikke finde nogen kolonner som kunne bruges til at kæde
tabellerne sammen og ved nærmere eftertanke er det måske slet ikke det du
har brug for. Det kunne se ud til at du skal bruge en union som sådan her :
SELECT Almuegym.Id
FROM Almuegym
WHERE Almuegym.Årskar > Almuegym.Prøve AND Almuegym.Prøve > 93
UNION ALL
SELECT Mellemgym.Id
FROM Mellemgym
WHERE Mellemgym.Årskar > Mellemgym.Prøve AND Mellemgym.Prøve > 93
Er det ikke det du skal bruge ?