/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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!



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste