Re: Eleganteres SELECT mit LEFT JOIN

Re: Eleganteres SELECT mit LEFT JOIN

am 31.03.2008 21:03:57 von Thomas Mlynarczyk

Frank Arthur schrieb:

>>>> +----+-------+----+------+
>>>> | Id | Foo | Id | Bar |
>>>> +----+-------+----+------+
>>>> | 1 | Hallo | 1 | Hi |
>>>> | 2 | Welt |NULL| NULL |
>>>> +----+-------+----+------+

> Dann mach's doch einfach so:
>
> SELECT `B`.*, `A`.*
> FROM `A`
> LEFT JOIN `B`
> ON A.Id = B.Id;
>
> +------+------+----+-------+
> | id | Bar | Id | Foo |
> +------+------+----+-------+
> | 1 | Hi | 1 | Hallo |
> | NULL | NULL | 2 | Welt |
> +------+------+----+-------+
>
> Dann überschreiben alle Spalten von A die von B, also auch die Id.
>
> Oder:
>
> SELECT *, `A`.`Id`
> FROM `A`
> LEFT JOIN `B`
> ON A.Id = B.Id;
>
> +----+-------+------+------+----+
> | Id | Foo | id | Bar | Id |
> +----+-------+------+------+----+
> | 1 | Hallo | 1 | Hi | 1 |
> | 2 | Welt | NULL | NULL | 2 |
> +----+-------+------+------+----+
>
> Dann hast du unter Garantie den Wert Id von der Tabelle A im Ergebnis.

Werde ich mal im Hinterkopf behalten, allerdings sieht insbesondere die
zweite Variante irgendwie nach Würgaround aus, wenn man sich die
Ergebnistabelle ansieht. Aber beide Vorschläge erfüllen meinen Wunsch
nach einem eleganteren SELECT.

Gruß und Dank,
Thomas

--
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)