Lukas: mysql5: ORDER BY und UNION

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  

  1. 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

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. 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