Rolf B: mysql-Query-Frage

Beitrag lesen

Hallo Robert,

ich glaube, einem Subselect in einer WHERE-Expression, also so wie hier:

WHERE ...
  AND r.Erstelldatum > (SELECT r2.Erstelldatum 
                        FROM   table2 r2 JOIN table1 rz2 ON rz2.RID = r2.RID
                        WHERE  rz2.MID = myMID AND
                               r2.Bart = 'R' AND r2.Rart  = 'R' AND
                               r2.St = 0 AND r2.D = 1)

kann man keinen Alias zuweisen.

Und man kann ihn auch nicht als SUBSELECT in die SELECT-Liste klemmen, ihm dort einen Alias geben und dann im WHERE darauf Bezug nehmen.

Da der Subselect auf eine Spalte aus dem Hauptselect Bezug nimmt, glaube ich auch nicht, dass man den Subselect sinnvoll loswerden kann. Oder? Hm.

SELECT rz.RID, rz.MID

FROM   table1 rz 
  JOIN table2 r   ON r.RID   = rz.RID  AND r.BArt  = 'R'

JOIN   table1 rz2 ON rz2.MID = rz.MID
  JOIN table2 r2  ON r2.RID  = rz2.RID AND r2.BArt = 'R'

WHERE r.RArt  = 'A'
  AND r2.RArt = 'R'
  AND r2.St   = 0 
  AND r2.D    = 1
  AND r.Erstelldatum > r2.Erstelldatum 

Ob das lesbarer ist... Muss Jörgbeurteilen. Und man müsste es auch noch EXPLAINen, um zu schauen, ob es gleich effizient ist.

Rolf

--
sumpsi - posui - obstruxi