20. februar 2005 - 16:16Der er
4 kommentarer og 1 løsning
Fejl ved group by
Jeg skal udskrive en liste med alle emner i en bestemt kategori. (Det virker fint fint)
Men jeg ønsker at hvis der er flere ens emner i samme kategori, skal de udskrives en gang, således at emnet kun vises 1 gang på listen.
Til dette har jeg sat "group by ModelID" ind i min SQL-sætning.
Desværre får jeg blot denne fejl, når siden køres: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ModelID where CatID=4".
--- SQLKODE --- ReviewSQL2 = "Select *,(select Model from tbl_RModels where tbl_RModels.ModelID = tbl_Reviews.ModelID)as RModel,(select Category from tbl_RCategories where tbl_RCategories.CatID = tbl_Reviews.CatID)as RCategory,(select Manufacturer from tbl_RManufacturers where tbl_RManufacturers.ManufacturerID = tbl_Reviews.ManufacturerID)as RManufacturer from tbl_Reviews group by ModelID where CatID="& request.QueryString("CatID") &" order by ReviewDate, ReviewTime desc" --- SQLKODE ---
Når jeg nu rykker den, får jeg denne fejl: [Microsoft][ODBC Microsoft Access-driver] Der kan ikke grupperes efter felter, der er markeret med "*".
Så ændrer jeg SQL-sætningen til følgende:
---SQLKODE--- ReviewSQL2 = "Select ReviewID, MemberID, CatID, ManufacturerID, ModelID, Rating, ReviewDate, ReviewTime, ReviewActive, (select Model from tbl_RModels where tbl_RModels.ModelID = tbl_Reviews.ModelID)as RModel,(select Category from tbl_RCategories where tbl_RCategories.CatID = tbl_Reviews.CatID)as RCategory,(select Manufacturer from tbl_RManufacturers where tbl_RManufacturers.ManufacturerID = tbl_Reviews.ManufacturerID)as RManufacturer from tbl_Reviews where ReviewActive=1 and CatID="& request.QueryString("CatID") &" group by ModelID order by ReviewDate desc" ---SQLKODE--
Og så får jeg en ny fejl :( Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "ReviewID" som en del af en aggregatfunktion.
Du kan få de felter ud, du laver group by på, eller en beregning på de øvrige. Andet vil ikke give mening. Ex:
id felt1 felt2 1 hund viggo 2 hund fido 3 kat karo
med en select felt1,felt2 from dyr group by felt1 er der jo ingen der ved hvad den skal skrive i felt2. Så det er nok mere hvad det er du vil have. Jeg kan ikke gennemskue det ;)
---SQLKODE--- ReviewSQL2 = "Select DISTINCT(ModelId), " &_ "(select AVG(Rating) FROM tbl_Reviews r9 WHERE r9.ModelID = tbl_Reviews.ModelID and ReviewActive=1) AS RRating, " &_ "(select DISTINCT TOP 1 ReviewDate FROM tbl_Reviews r9 WHERE r9.ModelID = tbl_Reviews.ModelID order by ReviewDate desc) AS TopReview," &_ "(select COUNT(ModelID) FROM tbl_Reviews r9 WHERE r9.ModelID = tbl_Reviews.ModelID and ReviewActive=1) AS CountModelID," &_ "(select Model from tbl_RModels where tbl_RModels.ModelID = tbl_Reviews.ModelID)as RModel, " &_ "(select Category from tbl_RCategories where tbl_RCategories.CatID = tbl_Reviews.CatID order by Category asc)as RCategory, " &_ "(select ManufacturerID from tbl_RManufacturers where tbl_RManufacturers.ManufacturerID = tbl_Reviews.ManufacturerID order by ManufacturerID asc)as RManID, " &_ "(select Manufacturer from tbl_RManufacturers where tbl_RManufacturers.ManufacturerID = tbl_Reviews.ManufacturerID)as RManufacturer " &_ "from tbl_Reviews where ReviewActive=1 and CatID="& request.QueryString("CatID") &"" set rsReviewSQL2 = conn.execute(ReviewSQL2) ---SQLKODE---
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.