hi,
ich ermittle mit einer Subquery _zwei_ Spaltenwerte. Es handelt sich also nicht mehr um eine skalare Subquery, sondern um das, was MySQL eine Row Subquery nennt.
Nur, wie weise ich jetzt deren Ergebnis zwei Aliasnamen in meinem umgebenden SELECT-Statement zu?
Bei einer skalaren Subquery würde ich ja wie folgt vorgehen:
SELECT blubb,
( SELECT blah1 FROM ... ) AS blah
FROM ...
Aber wie mache ich das mit einer Row Subquery, die mir zwei Werte liefert?
SELECT blubb,
( SELECT blah1, quark1 FROM ... ) AS what_goes_here???
FROM ...
( SELECT blah1, quark1 FROM ... ) AS blah, quark
"funzt" nicht - erwartungsgemäß, Fehlermeldung "Operand should contain 1 column(s)".
( SELECT blah1, quark1 FROM ... ) AS (blah, quark)
geht genauso wenig,
" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(blah, quark)'".
Einen "Row Constructor", wie auf der Seite über Row Subqueries beschrieben, an dieser Stelle einzusetzen, gelingt mir auch nicht - dort gibt es nur Beispiele, wo dieser in der WHERE-Klausel auftaucht - auch wenn dort steht "they are legal in other contexts as well."
( SELECT blah1, quark1 FROM ... ) AS ROW(blah, quark)
oder auch das mir selbst abwegig erscheinende
SELECT blubb, ROW(blah, quark) = ( SELECT blah1, quark1 FROM ... )
ergeben ebenfalls nur Fehler.
Wie macht man das "richtig"? Gibt es überhaupt eine Möglichkeit?
Oder habe ich keine andere Wahl, als beide Werte in der Subquery mit einem CONCAT zu verknüpfen, mir als einen Wert zurückliefern zu lassen, und sie anschließend wieder auseinanderzupflücken?
MySQL-Version ist MySQL - 4.1.18-nt
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }