ORDER BY funzt nicht mit UNION
Linuchss
- sql
Hallo,
im Web endlose und uralte Diskussionen gefunden, aber keine Lösung. Auch die selfHTML-Lösung von Daniela Koller 28.06.2005 funktioniert bei mir (MySQL-Vers.=[10.1.37-MariaDB-0+deb9u1]) nicht.
Dies habe ich versucht:
(
SELECT ...
)
UNION
(
SELECT ...
)
UNION
(
SELECT ...
)
ORDER BY ...
LIMIT ...
und dies, ORDER wie von Daniela empfohlen dem letzten Select zugeordnet:
(
SELECT ...
)
UNION
(
SELECT ...
)
UNION
(
SELECT ...
ORDER BY ...
)
LIMIT ...
Und dann sehe ich Beispiele ohne Klammern, auch versucht:
SELECT ...
UNION
SELECT ...
UNION
SELECT ...
ORDER BY ...
LIMIT ...
Da ist noch niochtmal klar, worauf sich ORDER BY beziehen soll, funzt natürlich auch nicht.
Gibt es nach gefühlt zwei Jahrzehnten eine Lösung, die den Suchmaschinen verborgen ist?
fragt Linuchs
Hi,
im Web endlose und uralte Diskussionen gefunden, aber keine Lösung. Auch die selfHTML-Lösung von Daniela Koller 28.06.2005 funktioniert bei mir (MySQL-Vers.=[10.1.37-MariaDB-0+deb9u1]) nicht.
Um das ganze Select Union Select noch ein weiteres Select legen, und darin den Order-Befehl (Ist das jetzt ein Pleonasmus?) unterbringen.
cu,
Andreas a/k/a MudGuard
Ho,
Um das ganze Select Union Select noch ein weiteres Select legen, und darin den Order-Befehl (Ist das jetzt ein Pleonasmus?) unterbringen.
Danke fürs Mitdenken, aber so wie ich es verstanden habe, ernte ich die Fehlermeldung
1241: Operand should contain 1 column(s)
SELECT (
SELECT ...
UNION
SELECT ...
UNION
SELECT ...
ORDER BY fund
) dummy
LIMIT 0,50
dummy habe ich als 1 column hinzugefügt, nutzte nichts.
Ging das nicht eher so?
SELECT foo, bar (
SELECT foo, bar FROM t1
UNION
SELECT foo, bar FROM t2
UNION
SELECT klick AS foo, klack AS bar FROM t3
)
ORDER BY foo
Select will eine Spalte oder Variable selektieren. Die Subselects liefern eine virtuell vereinte Tabelle, die sortiert wird.
Möglicherweise ist es aber schlauer, eine Tabelle von Typ merge
oder connect
zu bauen, welche dann (virtuell) die anderen Tabellen enthält.
( SELECT ... ) UNION ( SELECT ... ) UNION ( SELECT ... ) ORDER BY ... LIMIT ...
Lass einfach mal die Klammern weg... - UNION ALL und den feinen Unterschied kennst Du?
SELECT ...
UNION
SELECT ...
UNION
SELECT ...
ORDER BY ...
LIMIT ...
danke dir, ich habe es nochmals vergeblich versucht, bis ich auf den Verdacht kam, dass unsichtbare Leerzeichen am Anfang des Strings stehen.
Leerzeichen waren es nicht, aber zwei Sterne **
, die Fettschrift einleiten. Manche Titel von Veranstaltungen hatten auch "
vorneweg.
Nach dem SQL habe ich per PHP alle Textformatierungen entfernt, sie deshalb also nicht gesehen.
Nun entferne ich die Verdächtigen im SQL:
...
,REPLACE( REPLACE( trm1.titel, '\"', '' ), '**', '' ) -- fund -- ** stoeren bei ORDER BY
...
Jetzt funzt es auch mit ORDER BY