Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

wwwxxx0cm, www.webdp.net, Event 9 IIS log failed to write entry, wwwxxx jeffs, Catastrophic failure Unexpected method call sequence. 0x8000ffff (-2147418113)., ksh lock a file, [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_DBC failed, sed: -e expression #1, char 1: unterminated address regex, procmail + change subject, w2ksp4.exe download

Links

XODOX
Impressum

#1: Re: Eleganteres SELECT mit LEFT JOIN

Posted on 2008-03-31 08:16:09 by Frank Arthur

>>> +----+-------+----+------+
>>> | Id | Foo | Id | Bar |
>>> +----+-------+----+------+
>>> | 1 | Hallo | 1 | Hi |
>>> | 2 | Welt |NULL| NULL |
>>> +----+-------+----+------+
>
>> Ein gutes Beispiel, warum man SELECT * nicht benutzen sollte. Versuch's
>> mal mit SELECT Foo, A.Id, Bar statt SELECT *.
>
> Klar, das habe ich ja jetzt auch eingebaut, aber bei ca. 40 Spalten wird
> das SELECT dann ungemütlich lang, weshalb ich auf eine elegantere
> Möglichkeit gehofft hatte. Die USING-Syntax hilft mir im konkreten Fall
> auch nicht, weil das gewünschte Verhalten offenbar (lt. MySQL-Doku) erst
> ab Version 5 implementiert ist, und ich es hier leider noch mit einer
> 4er-Version zu tun habe. Aber immerhin habe ich wieder mal was gelernt
> ;-)

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.

Report this message