|
| hjælp til sql i MSSQL Fra : Jørgen Müller |
Dato : 14-02-03 08:10 |
|
Hej Gruppe
Jeg forsøger at lave en Top 5 for hver fiskeart ud fra vægten, men kan ikke
rigtig få det til virke, og håber derfor på jeres hjælp?
T_Fangst indeholder FiskeartID - integer og en til mange forbindelse til
T_Fiskeart der har felterne FiskeartID/integer/autonummer samt
FiskeArt/nvarchar.
T_Fangst har også feltet Vægt/float/8.
Har prøvet med
SELECT TOP 5 T_Fiskeart.FiskeArt, T_Fangst.Vægt
FROM T_Fangst
CROSS JOIN T_Fiskeart
GROUP BY T_Fiskeart.FiskeArt, T_Fangst.Vægt
ORDER BY T_Fangst.Vægt DESC
Men den giver kun de 5 med største vægt uanset art - nogen der kan hjælpe?
--
Med Venlig Hilsen
Jørgen Müller
| |
Nis Jorgensen (14-02-2003)
| Kommentar Fra : Nis Jorgensen |
Dato : 14-02-03 11:29 |
|
On Fri, 14 Feb 2003 08:10:16 +0100, "Jørgen Müller"
<j.muller@mail.tele.dk> wrote:
>
>
>Jeg forsøger at lave en Top 5 for hver fiskeart ud fra vægten, men kan ikke
>rigtig få det til virke, og håber derfor på jeres hjælp?
>
>T_Fangst indeholder FiskeartID - integer og en til mange forbindelse til
>T_Fiskeart der har felterne FiskeartID/integer/autonummer samt
>FiskeArt/nvarchar.
>T_Fangst har også feltet Vægt/float/8.
>
>Har prøvet med
>SELECT TOP 5 T_Fiskeart.FiskeArt, T_Fangst.Vægt
>FROM T_Fangst
>CROSS JOIN T_Fiskeart
>GROUP BY T_Fiskeart.FiskeArt, T_Fangst.Vægt
>ORDER BY T_Fangst.Vægt DESC
Du har med garanti ikke lyst til at bruge en CROSS JOIN - jeg går
nedenfor ud fra at T_Fangst indeholder en reference FiskeArtID til
T_Fiskeart
SELECT T_Fiskeart.FiskeArt, T_Fangst.Vægt
FROM T_Fangst INNER JOIN T_FiskeartID,
WHERE (SELECT Count(*)
FROM T_Fangst AS t2
WHERE t2.FiskeartID = t1.FiskeArtID AND
t2.Vægt >= t1.Vægt) <= 5
--
Nis Jørgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Jørgen Müller (14-02-2003)
| Kommentar Fra : Jørgen Müller |
Dato : 14-02-03 12:37 |
|
Nis Skrev:
>SELECT T_Fiskeart.FiskeArt, T_Fangst.Vægt
>FROM T_Fangst INNER JOIN T_FiskeartID,
>WHERE (SELECT Count(*)
>FROM T_Fangst AS t2
>WHERE t2.FiskeartID = t1.FiskeArtID AND
>t2.Vægt >= t1.Vægt) <= 5
Giver en fejl med incorrect syntax near WHERE
du skrive t1, hvor får du den fra?
T_Fangst indeholder Fiskeart og Vægt
T_FiskeArt indeholder FiskeartID og FiskeArt
har prøvet at lave lidt om på navnene men får stadig ovenstående fejl.
Har rodet med access men aldrig selv skrevet mine sql, så her er jeg
nybegynder.
--
Med Venlig Hilsen
Jørgen Müller
| |
Jørgen Müller (14-02-2003)
| Kommentar Fra : Jørgen Müller |
Dato : 14-02-03 13:04 |
|
Hej Igen
Har jeg rodet lidt i Access med det Nis kom med, og tilsyneladende virker:
SELECT T_Fiskeart.FiskeArt, T_Fangst.Vægt
FROM T_Fiskeart INNER JOIN T_Fangst ON T_Fiskeart.FiskeartID =
T_Fangst.Fiskeart
WHERE ((((SELECT COUNT(*)
FROM T_Fangst AS t2
WHERE t2.Fiskeart = T_Fiskeart.FiskeartID AND
t2.Vægt >= T_Fangst.Vægt))<=5))
ORDER BY T_Fiskeart.FiskeArt, T_Fangst.Vægt DESC;
--
Med Venlig Hilsen
Jørgen Müller
| |
Nis Jorgensen (14-02-2003)
| Kommentar Fra : Nis Jorgensen |
Dato : 14-02-03 13:04 |
|
On Fri, 14 Feb 2003 12:37:11 +0100, "Jørgen Müller"
<j.muller@mail.tele.dk> wrote:
>Nis Skrev:
>>SELECT T_Fiskeart.FiskeArt, T_Fangst.Vægt
>>FROM T_Fangst INNER JOIN T_FiskeartID,
>>WHERE (SELECT Count(*)
>>FROM T_Fangst AS t2
>>WHERE t2.FiskeartID = t1.FiskeArtID AND
>>t2.Vægt >= t1.Vægt) <= 5
>
>Giver en fejl med incorrect syntax near WHERE
Der er et komma for meget på linjen før (og der mangler også en join
condition).
--
Nis Jørgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Jørgen Müller (14-02-2003)
| Kommentar Fra : Jørgen Müller |
Dato : 14-02-03 13:35 |
|
Hej Nis
Mange tak for hjælpen, du ledte mig på rette vej.
Den endelige udformning blev kørt med de 10 største fisk i hver art og lidt
flere data tilføjet:
strSQL = "SELECT T_klub.Klubnavn, T_Fangst.Fangstdato, T_Fiskeart.FiskeArt,
" &_
"T_Fangst.Vægt, T_Fangststed.Fangststed, T_Fangst.Navn " &_
"FROM T_klub INNER JOIN T_Fiskeart INNER JOIN T_Fangststed INNER JOIN "
&_
"T_Fangst ON T_Fangststed.FangststedID = T_Fangst.Fangststed ON " &_
"T_Fiskeart.FiskeartID = T_Fangst.Fiskeart ON " &_
"T_klub.KlubID = T_Fangst.Klub " &_
"WHERE (((SELECT COUNT(*) " &_
"FROM T_Fangst AS t2 " &_
"WHERE t2.Fiskeart = T_Fiskeart.FiskeartID AND t2.Vægt >= " &_
"T_Fangst.Vægt)) <= 10) " &_
"ORDER BY T_Fiskeart.FiskeArt, T_Fangst.Vægt DESC"
--
Med Venlig Hilsen
Jørgen Müller
| |
|
|