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




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste