mysql5: ORDER BY und UNION
Lukas
- datenbank
Hi,
ich habe eine Abfrage, bei der MySql der Meinung ist, eine Spalte einer Tabelle nicht zu kennen, die aber definitiv existiert.
Meine Query (ich habe versucht, sie zu kürzen):
select
b.Spalte1,
t.Spalte1,
l.Spalte1,
k.Spalte1
FROM table1 b
JOIN table2 t ON b.TID = t.TID
JOIN table3 l ON b.LID = l.KID
LEFT JOIN table4 k ON t.TeID = k.TeID
WHERE
b.MID=4545
UNION
select
kt.Spalte1,
k.Spalte2,
k.Spalte3,
k.Spalte4
FROM table5 kt
LEFT JOIN table4 k ON kt.TeID = k.TeID
WHERE
kt.MID=4545
order by k.Spalte_XY, k.TeID
Beide SELECTS greifen auf die 'table4' zu. Innerhalb der 'table4' gibt es eine Spalte namens 'Spalte_XY'.
Also mache ich einen Fehler. Aber welchen?
Und wie kann ich dennoch erreichen, daß mir nach der Spalte_XY sortiert wird?
Lukas
Hi,
Also mache ich einen Fehler. Aber welchen?
Du liest nicht im Handbuch nach.
http://dev.mysql.com/doc/refman/5.5/en/union.html – das sind einige Sachen erwähnt, die in Bezug auf ORDER BY in UNION wichtig sind.
MfG ChrisB
Hi Chris,
http://dev.mysql.com/doc/refman/5.5/en/union.html – das sind einige Sachen erwähnt, die in Bezug auf ORDER BY in UNION wichtig sind.
Danke für die Antwort und den Link.
Zum Nachlesen:
This kind of ORDER BY cannot use column references that include a table name (that is, names in tbl_name.col_name format). Instead, provide a column alias in the first SELECT statement and refer to the alias in the ORDER BY.
Lukas