Alles, was Du mit Subselect kannst, kannst Du auch mit einer temp-Tabelle imitieren. Abfrage 1 - in tmp speichern (subselect), dann tmp abfragen (Hauptselect).
Das Verwenden einer temporären Tabelle scheint die einzig brauchbare Lösung des Problems zu sein.
Ich hab das nun (auf des gegebene Bespiel bezogen) so gelöst:
CREATE TEMPORARY TABLE temptable
SELECT * FROM Persons
;
ALTER TABLE temptable
ADD ( Telefon varchar(50), Fax varchar(50) );
UPDATE temptable
, Connections
, ConnectionTypes
SET temptable
.Telefon
=Connections
.Value
WHERE temptable
.ID
=Connections
.ID\_Persons
AND
Connections
.ID\_ConnectionTypes
=ConnectionTypes
.ID
AND
ConnectionTypes
.Name
='Telefon';
UPDATE temptable
, Connections
, ConnectionTypes
SET temptable
.Fax
=Connections
.Value
WHERE temptable
.ID
=Connections
.ID\_Persons
AND
Connections
.ID\_ConnectionTypes
=ConnectionTypes
.ID
AND
ConnectionTypes
.Name
='Fax' AND Connections
.IsPrimary
=1;
(In dem zweiten Update habe ich das erwähnte IsPrimary-Feld beispielhaft mit eingebaut.)
Das ist zwar etwas aufwändiger aber dafür kann man nun schön SELECTen ohne rumzuJOINen :-)
Dank allen, die mitgeknobelt haben.
dedlfix