Hoi,

Iemand enig idee hoe ik op 1 veld bestaande uit 4 cijfers op eerst het 2e getal kan laten sorteren en daarna groeperen op het eerste eerste getal van datzelfde veld in een select query :

de bedoeling is dat de lijst er zo uitkomt
0044
1044
0095
0285
1285
2285
1123
2123

etc.

Als welk datatype zijn deze getallen opgeslagen?
Momenteel als VARCHAR (4) maar op dit moment nog altijd aanpasbaar. Ze verwijzen echter naar taxinummers vandaar deze keuze. bv taxi 0285, 1285, en 2285 horen bij elkaar.
Is jouw voorbeeld wel helemaal correct? Je zegt dat er eerst op het 2e getal moet worden gesorteerd. 0, 1 , 2, etc. Maar jij komt met de 0 en je gaat dan naar 2 en dan pas komt 1 aan de beurt. Ik verwacht eigenlijk de volgende sortering:
0044
1044
0095
1123 < een 1 op de 2e plek
2123 < idem
0285
1285
2285

Heb ik dit goed?
Mijn voorbeeld heb ik met de volgende query gemaakt:

SELECT
  voorbeeld
FROM
  test
ORDER BY
  SUBSTRING(voorbeeld, 2, 3),
  SUBSTRING(voorbeeld, 1, 1)

In de kolom 'voorbeeld' staan de diverse getallen.
Heb inderdaad bij mijn 1e voorbeeld een fout gemaakt 1123 staat natuurlijk VOOR 0285 bij hetgeen ik nodig heb.

Laat in mijn 2e voorbeeld de 1e cijfers maar eens weg dan zie je dat die volgorde klopt.

Er moet dus eerst op de 100 tallen gesorteerd worden dan op de 1000 tallen.

Als ik alleen maar op de complete getallen zou moeten sorteren zou het geen probleem zijn.

Maat ik kan dus met een substr(taxi, 2, 1) sorteren op eerst het 2e getal en dan op het eerste getal. jemig ik voel me wel erg knullig dat ik dat niet zelf bedacht heb...

Waarschijnlijk te lang bezig geweest vandaag ..
In dat geval is mijn query je beste vriend!
In het geval van braziliaanse dames is Frank MIJN grootste vriend. Tot PHPhulp Meeting V3.0 te Brazilie.

Reageren