[INTERBASE] sorteren op count

Pagina: 1
Acties:

  • Tijsje
  • Registratie: Februari 2001
  • Laatst online: 09-05 15:29
Ik heb deze query, en nu wil ik hem laten sorteren op aantal.
In mysql zeg je gewoon order by aantal maar dat werkt bij interbase niet.
Ben al een uur aan het zoeken en kan het nergens vinden.
Iemand die me verder kan helpen?

code:
1
2
3
SELECT nummer, count (*) as aantal
FROM bellers 
GROUP BY nummer

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

"werkt niet"
Wat werkt er niet? Krijg je een foutmelding? Zo ja welke? Zie ook P&W FAQ - De "quickstart"

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Order by 2

Dat werkt gegarandeerd. :)

Verwijderd

Je hebt je count(*) ge-aliast. Niet elk DBMS staat toe dat dit alias binnen de query gebruikt wordt. Daarnaast heb je ook nog eens dat niet elk DBMS sortering op geaggregeerde kolommen ondersteunt. Je zit het veiligst met de botte kolomnummering
SQL:
1
ORDER BY 2, 1

maar zoals gezegd is ook dat niet algemeen ondersteund.

Edit: ow net te laat :) .

[ Voor 5% gewijzigd door Verwijderd op 01-04-2005 15:42 ]


Verwijderd

'order by <kolomnummer>' is standaard SQL'92, maar ja, dat is 'order by <aliasnaam>' ook...

Hoe dan ook, InterBase 4.2 en 5.6 vinden een order by op naampje van een geaggregeerde kolom niet leuk, dus dan pak je maar het kolomnummer (ook al is 't een "deprecated feature").
Ik heb 't nog niet getest met InterBase 7.

  • Tijsje
  • Registratie: Februari 2001
  • Laatst online: 09-05 15:29
Dat je ook op kolomnummering kan sorteren is helemaal nieuw voor mij.
Hier was ik dus zelf nooit opgekomen.
Heb hiervoor eigenlijk alleen met mysql gewerkt en hier is veel meer informatie over te vinden.
Bedankt allemaal!

Verwijderd

Met welke InterBase versie werk je?
Wij zijn VAR van Borland/InterBase, dus ik kan waarschijnlijk wel ergens wat extra documentatie opduikelen. Al gebruik ik meestal alleen de meegeleverde Language Guide, Programmer's Guide, API Guide en Datadefinition Guide.

Voor InterBase problemen/oplossingen is Mers een goede plek om te zoeken (al gaf die me net een InterBase foutmelding... :))

Verwijderd

Tijsje schreef op vrijdag 01 april 2005 @ 15:02:
Ik heb deze query, en nu wil ik hem laten sorteren op aantal.
In mysql zeg je gewoon order by aantal maar dat werkt bij interbase niet.
Ben al een uur aan het zoeken en kan het nergens vinden.
Iemand die me verder kan helpen?
code:
1
2
3
4
SELECT nummer, count (nummerid) as nummerid
FROM bellers 
GROUP BY nummer
ORDER BY nummerid

De reden dat dit niet kan is dat in bovenstaand voorbeeld onduidelijk zou zijn op welke kolom je wilt sorteren.

Verwijderd

Verwijderd schreef op zaterdag 02 april 2005 @ 14:39:
[...]

code:
1
2
3
4
SELECT nummer, count (nummerid) as nummerid
FROM bellers 
GROUP BY nummer
ORDER BY nummerid

De reden dat dit niet kan is dat in bovenstaand voorbeeld onduidelijk zou zijn op welke kolom je wilt sorteren.
Zoals gezegd is het prima mogelijk met een "order by 2" Daarnaast is het een onhandig voorbeeld, realistischer is

code:
1
2
3
4
SELECT nummer, count (nummerid) as sinaasappelsap
FROM bellers 
GROUP BY nummer
ORDER BY sinaasappelsap


Er is geen reden dat het niet werkt, behalve dat de ontwikkelaars deze "feature" niet ingebouwd hebben. Toch maar eens kijken hoe het bij Firebird zit. Zo lastig zou het niet moeten zijn.

Verwijderd

InterBase t/m versie 5.6 is eigenlijk SQL89 met een aantal SQL92 toevoegingen en wat eigen dingen (event alerter, etc.).
Daarna begon de ellende bij Borland (toen nog Inprise): na een hoop intern geharrewar werd InterBase afgestoten en de sourcecode van InterBase 6 beta open source gemaakt, maar daar waren de vaste klanten niet echt blij mee. Dus heeft Borland eieren voor z'n geld gekozen, en is toch maar verdergegaan met het ondersteunen en doorontwikkelen van InterBase.

FireBird is gebaseerd op die IB 6 beta source, en is grotendeels compatibel met InterBase, maar nadien zijn beide ontwikkelteams een eigen weg ingeslagen. Met als gevolg dat sommige InterBase toevoegingen (de nieuwe management tools bv.) 't niet meer doen op FireBird, en andersom.

Verwijderd

Verwijderd schreef op vrijdag 01 april 2005 @ 15:47:
'order by <kolomnummer>' is standaard SQL'92, maar ja, dat is 'order by <aliasnaam>' ook...

Hoe dan ook, InterBase 4.2 en 5.6 vinden een order by op naampje van een geaggregeerde kolom niet leuk, dus dan pak je maar het kolomnummer (ook al is 't een "deprecated feature").
Ik heb 't nog niet getest met InterBase 7.
Toch wil access dat bijvoorbeeld weer niet doen met de alias afaik. volledig specificeren werkt dan vaak weer wel goed :)

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Je moet met de index werken zoals al is gezegd: dus order by 2.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1