01. oktober 2002 - 11:51Der er
18 kommentarer og 2 løsninger
Virker på Microsoft Access ikke på MYSQL
strSQL = "select PizzaID, count('PizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" set rs = Conn.Execute(strSQL) response.Write(rs("PizzaID"))
laver den her fejl
Microsoft OLE DB Provider for ODBC Drivers error '80020009'
[Microsoft][ODBC Driver Manager] Driver does not support this parameter
ameq >> Jeg bliver i tvivl om du har styr på GROUP BY. select PizzaID, count(*) AS antal From orderlist where OrderStatus = '1' group by PizzaID; Bemærk jeg har ændret navnet til antal. Denne select udvælger ALLE forskellige PizzaID og viser, antallet af gange de forekommer. f.eks. PizzaID antal 1 4 2 7 3 2 4 9
Hvis du kun vil have de 5 højeste forekommende: select PizzaID, count(*) AS antal From orderlist where OrderStatus = '1' group by PizzaID ORDER BY antal DESC LIMIT 5;
Du skal så efterfølgende løbe igennem din rs for at få de forskellige resultater.
ameq >> "sætte den til at udskrive den stort", skriver du. Jeg fatter ikke, hvad du mener med det.
Jeg allerede skrevet sql sætningen en gang: strSQL = "select PizzaID, count(*) AS antal From orderlist where OrderStatus = '1' group by PizzaID ORDER BY antal DESC LIMIT 5"
Er du klar over, at du skal gennemløbe dit resultatsæt for at få alle 5 værdier?: Set rs = Conn.Execute(strSQL)
' Gennemløb Recordset (rs) med en løkke Do response.Write rs("PizzaID") & ": antal=" & rs("antal") & "<br>" rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF
(Jeg kender ikke php, så jeg håber mit eksempel er korrekt).
strSQL = "select PizzaID, count(*) AS antal From orderlist where OrderStatus = '1' group by PizzaID ORDER BY antal DESC LIMIT 5" Set rs = Conn.Execute(strSQL) ' Gennemløb Recordset (rs) med en løkke Do Response.Write(rs("antal")) rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF
laver den her fejl
Microsoft OLE DB Provider for ODBC Drivers error '80020009'
[Microsoft][ODBC Driver Manager] Driver does not support this parameter
som sagt - jeg mener ikke at mysql kan lave både en count og en almindelige select i samme sætning... prøv disse to hver for sig og se om der sker fejl der;
strSQL = "select PizzaID From orderlist where OrderStatus = '1' group by PizzaID"
strSQL = "select count('PizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID"
he he sorry =) jeg ved ikke lige hvordan jeg skal skrive det men det jeg skal bruge er konollen "pizzaID" for dem der er der flest gang i konollen "pizzaID" sorry hvis jeg skriver noget "lort" før =) men som lasse_buck ´skriv =)
PizzaID antal 1 4 2 7 3 2 4 9
for når jeg udskriver den her <% strSQL = "select count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" Set rs = Conn.Execute(strSQL) ' Gennemløb Recordset (rs) med en løkke Do Response.Write(rs("pizzatop5") & "<br>") rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF %> får jeg den her 38 14 9 2 1 4 1 8 2 2 2 2 1 1 2 og det tror jeg nu ikke er rigtig
Vi prøver med lidt trinvis fejlsøgning. Denne her har du selv kørt uden fejl. Vi kalder den (1): <% strSQL = "select count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" Set rs = Conn.Execute(strSQL) ' Gennemløb Recordset (rs) med en løkke Do Response.Write(rs("pizzatop5") & "<br>") rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF %>
Afprøv så (2): <% strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" Set rs = Conn.Execute(strSQL) ' Gennemløb Recordset (rs) med en løkke Do Response.Write(rs("PizzaID") & ", " & rs("pizzatop5") & "<br>") rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF %>
Virker det?
Hvis ja, så prøv nr (3): <% strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" ORDER BY antal DESC Set rs = Conn.Execute(strSQL) ' Gennemløb Recordset (rs) med en løkke Do Response.Write(rs("PizzaID") & ", " & rs("pizzatop5") & "<br>") rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF %>
Hvis (3) virker så prøv med (4): strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" ORDER BY antal DESC LIMIT 5
(5): strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" ORDER BY antal DESC LIMIT 0,5
3) får jeg den her fejl strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID" ORDER BY antal DESC -----------------------------------------------------------------------------------------------------------------^ men flyttede den sidste " ned bare DESC, så får jeg bare den her fejl =)
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[TCX][MyODBC]Unknown column 'antal' in 'order clause'
<% strSQL = "select pizzaID, count('pizzaID') AS pizzatop5 From orderlist where OrderStatus = '1' group by PizzaID ORDER BY pizzatop5 DESC LIMIT 0,5" Set top5 = Conn.Execute(strSQL) ' Gennemløb Recordset (rs) med en løkke Do strSQL = "select * from pizzalisten where id = " & top5("pizzaID") set pizzalisten = Conn.Execute(strSQL) Response.Write("Navn : " & pizzalisten("name") & " - Antal : " & top5("pizzatop5") & "<br>") top5.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not top5.EOF %> DET VIRKER =) + jeg syns i har været så god så i skal have flere point
hehe - der er ikke noget at sige til, at du fik fejl på 'order by antal', når jeg havde kaldt feltet pizzatop5 :o)
Det burde ikke gøre nogen forskel, om du skriver count('pizzaID'), count(pizzaID) eller count(*). Count tæller rækker - ikke felter.
Lækkert at du fik det til at virke - tak for point!
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.