Mailinglisten-Archive |
Stefan Hundenborn schrieb am Dienstag, den 28. September 1999:
> ist es denn sinnvoll, eine Bedingung auf einer Spalte einer
> optionalen Tabelle zu setzen?
Ja, aber an der passenden Stelle!
> Bsp:
> Tabelle1
> - ID
> - SpalteTab1
>
> Tabelle2
> - ID
> - Tab1ID
> - SpalteTab2
>
> hole alle aus Tabelle1 und nur passende aus Tabelle2:
> SELECT SpalteTab1, SpalteTab2
> FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.Tab1ID
> WHERE SpalteTab2 = 'irgendwas';
>
> jetzt kommen alle Einträge aus Tabelle 1 und wenn es gleiche IDs in Tabelle2
> gibt, die der Bedingung genügen, kommen die auch.
> Falls die Bedingung SpalteTab2 aber nicht erfüllt ist, kommt nur die Zeile
> aus Tabelle1 und es sieht so aus, daß es keinen Eintrag in Tabelle2 gibt.
Verschiebe einfach die Zusatzbedingung in den ON-Teil, denn dann
gelten die Regeln des LEFT JOIN und die Bedingnung liefert "true",
auch wenn kein passender Datensatz aus Tabelle2 existiert:
SELECT SpalteTab1, SpalteTab2
FROM Tabelle1 LEFT JOIN Tabelle2
ON Tabelle1.ID = Tabelle2.Tab1ID
AND SpalteTab2 = 'irgendwas'
;
Ciao,
Martin
--
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ >
PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive