|
| Hjælp til SQL-sætning Fra : Casper Bang |
Dato : 28-12-04 14:54 |
|
Hej,
Jeg sidder med fire tabeller, som jeg skal lave en SQL-sætning til (MS SQL
Server 2000). Jeg kan dog ikke hitte ud af hvordan det kan klares uden at
lave en løkke som løber dem igennem :(
Mine tabeller er (forkortet, så irelevant data ikke vises):
-Person:
Personnummer (PK)
-Deltager:
Personnummer (FK -> Person.Personnummer 1:N ) (PK)
HoldID (FK -> Hold.ID N:1 ) (PK)
-Hold:
ID (PK)
KampID (FK -> Kamp.ID N:2 )
Kamp:
ID (PK)
Det vil sige:
- Hver person kan optræde som flere deltagere
- Hvert hold har 1 eller flere deltagere.
- Hver deltager kan være på flere hold, men kun på ét hold i samme kamp
- Hver kamp har 2 eller flere hold
Hvis jeg har 2 personnumre, vil jeg have en count på i hvor mange kampe de
er på forskellige hold.
Det burde jo være simpelt at finde ud af i hvor mange kampe de er
modstandere - men jeg kan bare ikke overskue det :(
Kan i hjælpe mig?
På forhånd tak for hjælpen!
Casper Bang
| |
Jan Bachman (28-12-2004)
| Kommentar Fra : Jan Bachman |
Dato : 28-12-04 16:06 |
|
>-Hold:
>ID (PK)
>KampID (FK -> Kamp.ID N:2 )
>
>Kamp:
>ID (PK)
Kan et hold kun spille én kamp, og så er det slut?
/Jan
| |
Casper Bang (28-12-2004)
| Kommentar Fra : Casper Bang |
Dato : 28-12-04 16:54 |
|
> Kan et hold kun spille én kamp, og så er det slut?
Ja, det er korrekt. Hvert hold bruges kun til én kamp
| |
Jan Bachman (28-12-2004)
| Kommentar Fra : Jan Bachman |
Dato : 28-12-04 17:25 |
|
>Ja, det er korrekt. Hvert hold bruges kun til én kamp
Noget i stil med dette må kunne hjælpe. Du kan hurtigt lave første
linje om til noget med count, hvis du bare skal have antallet af
gange, som de to har været modstandere.
SELECT nest1.kampID FROM
( SELECT deltager.holdID, hold.kampID
FROM deltager,hold
WHERE ((deltager.personnummer="person1")
AND (deltager.holdID=hold.ID))
) AS nest1,
( SELECT deltager.holdID, hold.kampID
FROM deltager,hold
WHERE ((deltager.personnummer="person2")
AND (deltager.holdID=hold.ID))
) AS nest2
WHERE ((nest1.kampID=nest2.kampID)
AND (nest1.holdID<>nest2.holdID))
/Jan
| |
Casper Bang (28-12-2004)
| Kommentar Fra : Casper Bang |
Dato : 28-12-04 18:18 |
|
[SNIP SQL Kode]
Jamen det virker jo perfekt :)
Var ikke klar over at man kunne lave inline-SQL strenge på dén måde.
Du skal have mange tak for hjælpen!
| |
|
|