[MsSQL] Herorderen van een query result

Pagina: 1
Acties:

  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
Ik wil graag een query gebruiken die de top 10 meest gebruikte catagorien van een tabel selecteert en alleen die vervolgens alfabetisch ordert. Het probleem (naast dat ik normaal vormgeving doe in plaats van SQL) is dus het 'herorderen' van de resultaten. Ik krijg het niet voor elkaar om dit te doen, waarschijnlijk door een gebrek aan kennis :)

SQL:
1
SELECT top 10 SubCat from Documents GROUP BY SubCat ORDER BY Count(SubCat) DESC


Voor de duidelijkheid, deze geeft terug de top 10 catagorien gebaseerd op het aantal keer dat deze voorkomen. Deze top 10 wil ik vervolgens niet op aantal maar alfabetisch weergeven. Kan iemand mij wat tips geven?


Het scheiden van ORDER values met comma's zorgt ervoor dat bij gelijke aantal hij pas alfabetisch ordert. Het gebruik van DISTINCT werkt niet omdat ik dan niet kan bij houden hoeveel keer een SubCat voorkomt. Ik dacht daarom een view aan te maken en die aan te roepen en alfabetisch te orderen maar dan krijg ik SQL errors.



SQL:
1
CREATE VIEW TopList AS (SELECT top 10 SubCat from Documents GROUP BY SubCat ORDER BY Count(SubCat)DESC); SELECT * from TopList ORDER BY SubCat ASC

Human Bobby


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je zult denk ik het makkelijst uitzijn met een subquery:

SQL:
1
2
SELECT SubCat FROM (SELECT top 10 SubCat from Documents GROUP BY SubCat ORDER BY Count(SubCat) DESC)
ORDER BY SubCat

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
dat geeft een error:
code:
1
2
3
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'ORDER'.

Human Bobby


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
laat maar niet goed gelezen...

[ Voor 91% gewijzigd door 4of9 op 22-02-2006 11:55 . Reden: volgende keer beter lezen ]

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
Je moet die subquery een alias geven, dan zal het wel lukken

code:
1
2
3
SELECT SubCat 
FROM ( SELECT top 10 SubCat from Documents GROUP BY SubCat ORDER BY Count(SubCat) DESC ) A
ORDER BY SubCat

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Justice schreef op woensdag 22 februari 2006 @ 11:46:
dat geeft een error:
code:
1
2
3
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'ORDER'.
Alias vergeten :x

Je moet na het laatste haakje van de subquery even een alias voor de subselect geven.

SQL:
1
2
SELECT SubCat FROM (SELECT top 10 SubCat from Documents GROUP BY SubCat ORDER BY Count(SubCat) DESC) as Bla
ORDER BY SubCat

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
Yes hij werkt :) Ik ga me maar even inlezen in aliasen. Bedankt allen :)

Human Bobby


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 17:37

Cyphax

Moderator LNX
En dan hoeft die "As" er nog nieteens bij. :P
Die alias zorgt ervoor dat het resultaat van die subquery nog te gebruiken is, als ware het een tabel.
Ik vergeet zelf ook altijd een alias aan zo'n resultaat te geven. Jammer dat de error niet iets meer informatie geeft.

[ Voor 32% gewijzigd door Cyphax op 22-02-2006 12:19 ]

Saved by the buoyancy of citrus


  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
Ja ik vind de error reports van MSSQL een beetje karig, zeker als "beginner".

Human Bobby

Pagina: 1