dedlfix: knifflige Verknüpfungsaufgabe - leider ohne Subselects

Beitrag lesen

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