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

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
SQL - problem
Fra : Ulrik Vadstrup


Dato : 18-07-01 20:15

Følgende select medfører at hvis der findes 2 fangster, altså 2 fangstID'er,
så kommer hele selecten 2 gange, hvilket jeg gerne skulle undgå.

SELECT DISTINCT Steder.ID,
Steder.Fangststed,
Steder.Adresse1,
Steder.Adresse2,
Steder.PostNr,
Steder.Bynavn,
Steder.Korsel,
Steder.Fiskevand,
Steder.Karakter,
Steder.PTEjer,
Steder.PTHjemmeside,
Steder.PTEmail,
Steder.Kommentar,
Steder.BilledLink,
Fangst.Ref,
Fangst.FangstDato
FROM Steder, Fangst
WHERE Steder.ID = Fangst.Ref
AND Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDTO

Håber I forstår hva jeg mener, ellers beskriver jeg det gerne bedre :)

Nogen der kan lure den ?


--
Med venlig hilsen
Ulrik Vadstrup



 
 
Flozzy (19-07-2001)
Kommentar
Fra : Flozzy


Dato : 19-07-01 04:26

Hej Ulrik

Et skud i tågen: Måske brugen af parenteser kunne hjælpe, f.eks..

WHERE (Steder.ID = Fangst.Ref)
AND (Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDATO)

Mvh. Flozzy

"Ulrik Vadstrup" <vadstrup@post12.tele.dk> skrev i en meddelelse
news:9j4n3q$om2$1@news.cybercity.dk...
> Følgende select medfører at hvis der findes 2 fangster, altså 2
fangstID'er,
> så kommer hele selecten 2 gange, hvilket jeg gerne skulle undgå.
>
> SELECT DISTINCT Steder.ID,
> Steder.Fangststed,
> Steder.Adresse1,
> Steder.Adresse2,
> Steder.PostNr,
> Steder.Bynavn,
> Steder.Korsel,
> Steder.Fiskevand,
> Steder.Karakter,
> Steder.PTEjer,
> Steder.PTHjemmeside,
> Steder.PTEmail,
> Steder.Kommentar,
> Steder.BilledLink,
> Fangst.Ref,
> Fangst.FangstDato
> FROM Steder, Fangst
> WHERE Steder.ID = Fangst.Ref
> AND Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDTO
>
> Håber I forstår hva jeg mener, ellers beskriver jeg det gerne bedre :)
>
> Nogen der kan lure den ?
>
>
> --
> Med venlig hilsen
> Ulrik Vadstrup
>
>





Ulrik Vadstrup (19-07-2001)
Kommentar
Fra : Ulrik Vadstrup


Dato : 19-07-01 16:47

"Flozzy" <jje@post3.tele.dk> wrote in message
news:3b565309$0$1009$edfadb0f@dspool01.news.tele.dk...
> Hej Ulrik
>
> Et skud i tågen: Måske brugen af parenteser kunne hjælpe, f.eks..
>
> WHERE (Steder.ID = Fangst.Ref)
> AND (Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDATO)
>
> Mvh. Flozzy
>
Næh - desværre :(

Ulrik



John Larsen (19-07-2001)
Kommentar
Fra : John Larsen


Dato : 19-07-01 20:04


"Ulrik Vadstrup" <vadstrup@post12.tele.dk> skrev i en meddelelse
news:9j4n3q$om2$1@news.cybercity.dk...
> SELECT DISTINCT Steder.ID,
...
> FROM Steder, Fangst
> WHERE Steder.ID = Fangst.Ref
> AND Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDTO

Du skal tænke på dansk :) og SQLe derefter på engelsk - Problem du vil gerne
have Fangst.Ref for en periode og derefter vil du gerne kende stederne der
hører til disse Reffer ?

FROM Steder, Fangst
Where (Fangst.FangstDato BETWEEN : STARTDATO AND :SLUTDATO) AND
(Steder.ID = Fangst.Ref)

Det skulle løse problemet, ellers er du meget velkommen til at kontakte mig,
så vil jeg lave en forsøgsopstilling :)

John




Ulrik Vadstrup (21-07-2001)
Kommentar
Fra : Ulrik Vadstrup


Dato : 21-07-01 09:15

"John Larsen" <jola@get2net.dk> wrote in message
news:3b572f20$0$293$edfadb0f@dspool01.news.tele.dk...
> Du skal tænke på dansk :) og SQLe derefter på engelsk - Problem du vil
gerne
> have Fangst.Ref for en periode og derefter vil du gerne kende stederne der
> hører til disse Reffer ?
>
> FROM Steder, Fangst
> Where (Fangst.FangstDato BETWEEN : STARTDATO AND :SLUTDATO) AND
> (Steder.ID = Fangst.Ref)
>
> Det skulle løse problemet, ellers er du meget velkommen til at kontakte
mig,
> så vil jeg lave en forsøgsopstilling :)
>
> John
>
Tjaaa - det bliver stadig selected 2 gange. Jeg skal gerne sende dig
databasen (Access), hvis du har mod på at hjælpe, for det er ved at trække
hår den her

Ulrik



P.L. (21-07-2001)
Kommentar
Fra : P.L.


Dato : 21-07-01 23:46

Hej Ulrik

Du har jo selv givet svaret, nemlig: "Følgende select medfører at hvis der findes 2 fangster, altså
2 fangstID'er ...".

Når du bruger "SELECT DISTINCT " skal ALLE fields være ens for, at du kun får 1 svar, det har du
ikke i: "altså 2 fangstID'er".
En løsning på problemet, kan jeg umiddelbart ikke komme med, da jeg ikke ved, hvad "Steder.ID" og
"Fangst.Ref" bruges til ??

P.L.


"Ulrik Vadstrup" <vadstrup@post12.tele.dk> skrev i en meddelelse
news:9j4n3q$om2$1@news.cybercity.dk...
> Følgende select medfører at hvis der findes 2 fangster, altså 2 fangstID'er,
> så kommer hele selecten 2 gange, hvilket jeg gerne skulle undgå.
>
> SELECT DISTINCT Steder.ID,
> Steder.Fangststed,
> Steder.Adresse1,
> Steder.Adresse2,
> Steder.PostNr,
> Steder.Bynavn,
> Steder.Korsel,
> Steder.Fiskevand,
> Steder.Karakter,
> Steder.PTEjer,
> Steder.PTHjemmeside,
> Steder.PTEmail,
> Steder.Kommentar,
> Steder.BilledLink,
> Fangst.Ref,
> Fangst.FangstDato
> FROM Steder, Fangst
> WHERE Steder.ID = Fangst.Ref
> AND Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDTO
>
> Håber I forstår hva jeg mener, ellers beskriver jeg det gerne bedre :)
>
> Nogen der kan lure den ?
>
>
> --
> Med venlig hilsen
> Ulrik Vadstrup
>
>



Thomas Due (24-07-2001)
Kommentar
Fra : Thomas Due


Dato : 24-07-01 07:49

> Du har jo selv givet svaret, nemlig: "Følgende select medfører at hvis der findes 2 fangster, altså
> 2 fangstID'er ...".
>
> Når du bruger "SELECT DISTINCT " skal ALLE fields være ens for, at du kun får 1 svar, det har du
> ikke i: "altså 2 fangstID'er".
> En løsning på problemet, kan jeg umiddelbart ikke komme med, da jeg ikke ved, hvad "Steder.ID" og
> "Fangst.Ref" bruges til ??
>
> P.L.
>

Prøv istedet for en besværlig WHERE at bruge en JOIN istedet. Det virker
som regel bedre.

F.eks.
SELECT DISTINCT Steder.ID,
...
FROM Steder LEFT JOIN Fangst ON (Steder.ID = Fangst.Ref)
WHERE Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDTO

Left Join kombinerer de poster i Steder med posterne i
Fangst som matcher ID.

Det skulle virke.

Mvh
Thomas Due

Ulrik Vadstrup (28-07-2001)
Kommentar
Fra : Ulrik Vadstrup


Dato : 28-07-01 21:15


> Prøv istedet for en besværlig WHERE at bruge en JOIN istedet. Det virker
> som regel bedre.
>
> F.eks.
> SELECT DISTINCT Steder.ID,
> ...
> FROM Steder LEFT JOIN Fangst ON (Steder.ID = Fangst.Ref)
> WHERE Fangst.FangstDato BETWEEN :STARTDATO AND :SLUTDTO
>
> Left Join kombinerer de poster i Steder med posterne i
> Fangst som matcher ID.
>
> Det skulle virke.
>
> Mvh
> Thomas Due

Det ser ud til det er koden den er gal med istedet for min select, men tak
for hjælpen

Ulrik



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste