28. juni 2006 - 14:49Der er
13 kommentarer og 1 løsning
Group by Top 10
Jeg har nedenstående SQL, som fint grupperer mit indhold:
SELECT DISTINCT bilmodel,biltype,bilmaerke,motor, count(bilmodel) as antal FROM items WHERE (bilmaerke LIKE '%tekst%' OR bilmodel LIKE '%tekst%' OR motor LIKE '%tekst%' OR hk LIKE '%tekst%') GROUP BY bilmodel, biltype,bilmaerke,motor ORDER BY biltype DESC
Der får jeg fint noget a la nedenstående frem:
Personbiler - Audi A4 - Audi A6 - Mercedes A160 osv.
Lastbiler - Mercedes Atego - Mercedes Axor osv.
Men hvordan sætter jeg en Top 10 på hver af disse 2 kategorier (BilType). Hvis jeg bare sætter en DISTINCT Top 10 biltype, så tager den kun de første 10 af alle biltyper. Jeg skal have Top 10 af hver af biltyperne....tricky?
Hej Rane! Du kan evt. prøve med dette - har aldrig arbejdet med group by så jeg er bestemt ikke sikker.
SELECT TOP 10 * DISTINCT bilmodel,biltype,bilmaerke,motor, count(bilmodel) as antal FROM items WHERE (bilmaerke LIKE '%tekst%' OR bilmodel LIKE '%tekst%' OR motor LIKE '%tekst%' OR hk LIKE '%tekst%') GROUP BY bilmodel, biltype,bilmaerke,motor ORDER BY biltype DESC
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'DISTINCT'.
Har prøvet det samme før + at sætte TOP 10 efter DISTINCT. Sidstnævnte giver selvsagt kun de første 10 hits uafhængig af biltypen.
SELECT DISTINCT bilmodel,biltype,bilmaerke,motor, count(bilmodel) as antal FROM items WHERE (bilmaerke LIKE '%tekst%' OR bilmodel LIKE '%tekst%' OR motor LIKE '%tekst%' OR hk LIKE '%tekst%') GROUP BY bilmodel, biltype,bilmaerke,motor LIMIT 10 ORDER BY biltype DESC
Argh ok - troede det fungerede på samme måde. Har du prøvet at fjerne stjernen efter TOP 10? Altså sådan her...
SELECT TOP 10 DISTINCT bilmodel,biltype,bilmaerke,motor, count(bilmodel) as antal FROM items WHERE (bilmaerke LIKE '%tekst%' OR bilmodel LIKE '%tekst%' OR motor LIKE '%tekst%' OR hk LIKE '%tekst%') GROUP BY bilmodel, biltype,bilmaerke,motor ORDER BY biltype DESC
Jep, samme fejl som tidligere. Kan det mon løses vha. noget paging halløj? Kan det vel næsten ikke...for jeg skal jo stadig bruge top 10 personbiler og top 10 lastbiler.
Kan du ikke sætte den til at ligge antal poster sammen i gennem dit loop - går udfra du looper søgeresultatet eller udtrækket fra databasen - altså: count = count + 1
Og så når count når 10 så skal den stoppe med at loope?
SELECT TOP 10 DISTINCT bilmodel, biltype, bilmaerke, motor, Count(bilmodel) AS antal FROM items WHERE biltype='personbil' AND (bilmaerke LIKE '%tekst%' OR bilmodel LIKE '%tekst%' OR motor LIKE '%tekst%' OR hk LIKE '%tekst%') GROUP BY bilmodel, biltype, bilmaerke, motor
UNION
SELECT TOP 10 DISTINCT bilmodel, biltype, bilmaerke, motor, Count(bilmodel) AS antal FROM items WHERE biltype='lastbil' AND (bilmaerke LIKE '%tekst%' OR bilmodel LIKE '%tekst%' OR motor LIKE '%tekst%' OR hk LIKE '%tekst%') GROUP BY bilmodel, biltype, bilmaerke, motor
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.