Mailinglisten-Archive |
Hallo Ralf, der folgende Abschnitt ist aus der Doku auf http://www2.rent-a-database.de/mysql-118.html#joins Grosser Dank an den Autor Guido Stepken! // Zitat Anfang [...] OUTER JOINs Folgende Aufgabe : Sie wollen eine Preisliste drucken, und überall dort, wo es einen Lieferanten aus England gibt, soll dessen Name angedruckt werden. Bei den anderen Artikeln soll diese Ergebnis Spalte leer bleiben. Ein einfacher JOIN reicht hier nicht mehr. Der Versuch, das Ergebnis so zu erzielen, wird scheitern: SELECT A.ArtikelNr, B.Lieferant FROM Artikel AS A, Lieferanten AS B WHERE A.LieferantID = B.LieferantID AND B.Land = 'GB'; Dieses Statement macht nicht das, was es soll. Die Ergebnismenge enthält nur die Artikel mit englischen Lieferanten. Der Grund ist auch klar : nur bei diesen Artikeln ist die zweite WHERE-Bedingung hinter dem "AND" erfüllt. Wir brauchen also etwas anderes : den OUTER JOIN. Der sieht so aus : SELECT A.ArtikelNr, B.Lieferant FROM Artikel AS A LEFT OUTER JOIN Lieferanten AS B ON A.LieferantID = B.LieferantIDWHERE B.Land = 'GB'; Bei einem OUTER JOIN gibt es immer eine Tabelle, die als erhaltene Tabelle bezeichnet wird; alle ihre Zeilen bleiben erhalten. Wenn es sich um einen LEFT OUTER JOIN handelt, ist die linke Tabelle (in unserem Beispiel Tabelle1) die erhaltene Tabelle; bei einem RIGHT OUTER JOIN ist es die rechte Tabelle (Tabelle2). Die ON-Bedingung muß keine Gleichheits-Bedingung sein. Nehmen wir an, Sie wollen für jeden Tag die Anzahl der Bestellungen zeigen, die vor diesem Tag fällig waren, und alle Tage sollen im Ergebnis enthalten sein. Das erfordert wieder einen LEFT OUTER JOIN, und könnte so aussehen : SELECT A.Tag, COUNT(B.BestellNr) FROM Tage AS A LEFT OUTER JOIN Bestellungen AS B ON A.Tag > B.FaelligkeitsDatum; [...] // Zitat Ende Gruss, Ruediger Ralf Beutler schrieb: > > hi, > > ich habe eine kleine Frage. > > Worin besteht der Unterschied zwischen einem > left join und einem left outer join? > Ich werde aus der Doku nicht schlau. > Beim Ausprobieren erhalte ich immer dasselbe Ergebnis. > > danke. > > br | rb > P.S. Besuchen Sie Intermediate auf der Midrange Welt (Frankfurt, 3./4. Mai 2000) und dem Common Europe Congress (Bremen, 14. bis 18. Mai 2000). Wir präsentieren aktuelle eBusiness-Lösungen auf der AS/400. Auf Anfrage senden wir Ihnen gerne Informationsmaterial zu diesen Veranstaltungen zu (mailto:info_(at)_intermediate.de). --- *** 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