|
| 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
| |
|
|