Mailinglisten-Archive |
ist es denn sinnvoll, eine Bedingung auf einer Spalte einer optionalen Tabelle zu setzen? 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. Also: SELECT SpalteTab1, SpalteTab2 FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.Tab1ID WHERE Tabelle2.Tab1ID IS NULL; würde alle Zeilen aus Tabelle1 lesen und nie etwas aus Tabelle2 bringen. Das Problem von Andreas Küster läßt sich nur mit Subselect and ID not in (select ID from ...) lösen oder da es keine Subselect in mySQL gibt mit temp Tables. Oder liege ich ganz falsch Martin? Gruß Stefan -----Original Message----- From: Martin Ramsch <m.ramsch_(at)_computer.org> To: Deutsche MySQL-Mailingliste <mysql-de_(at)_lists.4t2.com> Date: Monday, September 27, 1999 9:57 PM Subject: Re: Datenintegritaet bewahren .. aber wie ? Das geht schön mit einem LEFT JOIN und dem Test auf NULL-Werte: SELECT tab2.id FROM tab2 LEFT JOIN tab1 USING (id) WHERE tab1.id IS NULL; Wenn es zu einer id aus tab2 keine id in tab1 gibt, dann erzeugt der LEFT JOIN für tab1 NULL-Werte - und danach kann man testen. Ciao, Martin --- *** 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