Avatar billede wolfgang Praktikant
20. februar 2005 - 16:16 Der 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 ---

Håber I kan hjælpe

MVH
Wolfgang
Avatar billede erikjacobsen Ekspert
20. februar 2005 - 16:18 #1
Group by skal efter din where.
Avatar billede erikjacobsen Ekspert
20. februar 2005 - 16:18 #2
....og før din order by ;)
Avatar billede wolfgang Praktikant
20. februar 2005 - 17:10 #3
Hej Erik,
Det hjalp mig lidt videre.

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.

Kan du hjælpe videre herfra?
Avatar billede erikjacobsen Ekspert
20. februar 2005 - 17:28 #4
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 ;)
Avatar billede wolfgang Praktikant
26. februar 2005 - 11:06 #5
Problemet er nu løst.

---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---
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester