12. april 2002 - 07:49Der er
21 kommentarer og 2 løsninger
GROUP BY problem
Hejsa
Jeg er igang med at lave en online registrering af alt vores hardware på vores lager.
Nu vil jeg så gerne have en liste over alle kategorier med tilhørende oprettet hardware grupperet efter kategori.
Men jeg har bare nogle problemer.
Følgende sql:
strSQL = "SELECT * FROM HardwareIndex GROUP BY Kategori" Set rs = Connect.Execute(strSQL)
giver følgende fejl:
Microsoft][ODBC Microsoft Access Driver] Cannot group on fields selected with '*'.
/hardware/frameset/print_all.asp, line 20
linie 20 er den ovenstående sql-statement.
Følgende sql:
strSQL = "SELECT Maerke FROM HardwareIndex GROUP BY Kategori" Set rs = Connect.Execute(strSQL)
giver følgende fejl:
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Maerke' as part of an aggregate function.
Har nu følgende (som til forveksling ligner det nævnte 2. forslag)
strSQL = "SELECT Id,Kategori,Maerke,Model,Serienr,Maerke,Model,Lagerstatus,Antal FROM HardwareIndex GROUP BY Kategori" Set rs = Connect.Execute(strSQL)
men jeg får stadig følgende fejl:
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Id' as part of an aggregate function.
Til dels ja - men den grupperer ikke som den skal....prøv at kigge på hvordan jeg skitserede det...som det er nu kommer den kun med én Kategori som indeholder samtlige records i tabellen. Og det er bestemt ikke det jeg vil!
Du behøver kun 1 recordset, du kan bare sortere på kategori, og så have have en variabel der indeholder kategorien for det sidst udskrevne produkt. Hver gang du så støder på en ny kategori kan du så gøre et eller andet (fx udskrive en kategori overskrift). Altså i "semi-pseudo-kode" :
dim productsRS Set productsRS = myDbConnection.Execute("SELECT produkt_overskrift, [flere attributter], kategori_overskrift, kategori_id FROM produkter JOIN kategorier WHERE produkt_kategori_id = kategori_id ORDER BY kategori_overskrift")
dim lastCategoryId lastCategoryId = productsRS("kategori_id") Do While Not productsRS.EOF If lastCategoryId <> productsRS("kategori_id") Then Response.Write "<b>" & productsRS("kategori_overskrift") "</b><br>" lastCategoryId = productsRS("kategori_id") End If
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.