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