Problem mit ORDER BY

Kopfballstar

Erfahrenes Mitglied
Hallo,

ich stehe vor einem Problem welches ich einfach nicht gelöst bekomme. Ich führe einen SELECT mit LEFT JOIN aus und möchte dabei 4-fach sortieren.

Und zwar zuerst nach x_1, dann nach x_2, dann nach x_3.

Bis hierhin funktioniert das auch einwandfrei. Nun gibt es aber noch x_4 nach welchem diese Sortierung nochmal sortiert werden soll. Das klappt leider nicht mehr.

Weiß jemand vielleicht Rat?

Code:
SELECT 	   a.*, b.text 
FROM        table_1 AS a 
LEFT JOIN  table_2 AS b 
ON             (a.x_1 = b.x_1 AND a.x_2 = b.x_2 AND a.x_3 = b.x_3) 
WHERE 	   a.id = 'default' 
AND            b.id = 'default' 
ORDER BY a.x_1 ASC, a.x_2 ASC, a.x_3 ASC, a.x_4 ASC
 
Verstehe ich das richtig, dass erst die 2 Tabellen mit a.x_1 = b.x_1 AND a.x_2 = b.x_2 AND a.x_3 = b.x_3 verglichen werden? Und die Treffer/matches müssen dann noch zusätzlich WHERE a.id = 'default'
AND b.id = 'default'

erfüllen?
 
Du solltest mal die Inhalte von a.x_4 in der Datenbank prüfen, denn der Order-Teil ist ja soweit korrekt. Sind die Felder möglicherweise mit NULL gefüllt?

Sortiert er denn überhaupt nicht mehr, wenn Du x_4 in den Order-Bereich aufnimmst, oder wird nur x_4 bei der Sortierung ignoriert?
 
Es wird keine Fehlermeldung. Es wird einfach nicht nach x_4 Sortiert, bzw. so wie ich es mir vorstelle klappt es nicht. Ich versuche es mal darzustellen.

x_1: Ebene 1
x_2: Ebene 2
x_3: Ebene 3
x_4: zusätzlicher Sortierungs Parameter

Wenn ich aus der DB selektiere bekomme ich erstmal alles durcheinander. Also sortiere ich nach x_1 , x_2 und x_3. So kann ich die Daten im Smarty Template einfach über eine Schleife ausgeben. Das sieht dann so aus:

x_1
x_2 (3)
x_3 (1)
x_3 (2)
x_2 (2)
x_3 (2)
x_3 (3)
x_3 (1)
x_2 (1)
x_3 (1)

etc.....

Also eine Menüstruktur. Diese Struktur unterliegt aber nochmal x_4, dem zusätzlichen Sortierungs Parameter ( der Wert in Klammern ). Nach diesem müsste das Ganze also nochmal sortiert werden.
 
Du solltest mal die Inhalte von a.x_4 in der Datenbank prüfen, denn der Order-Teil ist ja soweit korrekt. Sind die Felder möglicherweise mit NULL gefüllt?

Sortiert er denn überhaupt nicht mehr, wenn Du x_4 in den Order-Bereich aufnimmst, oder wird nur x_4 bei der Sortierung ignoriert?


Die Daten sind alle zu 100% korrekt. So wie ich das sehe findet einfach keine Sortierung mehr statt. Mir stellt sich einfach die Frage ob es überhaupt noch möglich ist, achdem ich bereits nach x_1, x_2 und x_3 sortiert habe
 
Die Daten sind alle zu 100% korrekt. So wie ich das sehe findet einfach keine Sortierung mehr statt. Mir stellt sich einfach die Frage ob es überhaupt noch möglich ist, achdem ich bereits nach x_1, x_2 und x_3 sortiert habe

Mit welcher SQL-Datenbank arbeitest Du? Mir sind jedoch da wirklich keine Grenzen bekannt (zumindest nicht bei 4...). Das sollte in jeder SQL Datenbank funktionieren.

Ist x_4 als nullable definiert? Damit kommen manche Datenbanken nicht klar, wenn danach sortiert wird.
 
Zurück