Kartesisches ProduktWird die Verknüpfungsbedingung weggelassen, so verknüpft SQL jeden Satz der ersten Tabelle mit jedem Satz der zweiten (und weiteren)! Diese Operation nenn man ‚Kartesisches Produkt‘ – Ein Begriff aus der Matrix-Rechnung. Equi-Join (Natural Join)Einschluß aller Felder aller Tabellen – das ist oft unpraktisch. Meist will man die Schlüsselfelder nicht redundant im Ergebnis haben. Deswegen beschreibt man die Feldliste mit Alias-Angaben und wählt somit die in beiden (oder mehreren Tabellen ) gleichen Felder nur je einmal aus. SELECT * from preise07 join preise08 on ; preise07.art_id = preise08.art_id
Mit einer angepaßten Feldliste sieht das gleiche Ergebnis besser aus: SELECT ; preise07.art_id, ; preise07.stk_preis as preis07, ; preise08.stk_preis as preis08 ; from preise07 join preise08 on ; preise07.art_id = preise08.art_id
Allerdings enthält das Ergebnis offenbar nicht alle Sätze der linken Tabelle. Wir formulieren daher einen Outer Join Outer JoinLeft Join, Right Join, Full JoinSELECT * from preise07 left join preise08 on ; preise07.art_id = preise08.art_id
SELECT * from preise07 right join preise08 on ; preise07.art_id = preise08.art_id
SELECT * from preise07 full join preise08 on ; preise07.art_id = preise08.art_id
Nullwerte: NVL(), Isnull()Bei Outer Joins ergeben die ‚nicht Treffer‘ sozusagen Löcher im Ergebnis. In der Datenbanksprache werden sie als NULL-Werte beschrieben. .NULL. hat keinen Datentyp und ist nicht mit der „leeren Menge“ gleichzusetzen. In Vergleichsoperationen und Rechenoperationen erzeugt der Nullwert immer wieder .NULL. oder unvorhersehbare Werte. Zur Behandlung von Nullwerten dienen die Funktionen ISNULL(<Ausdruck>) und NVL(<Ausdruck 1>,< Ausdruck 2>) SELECT nvl(preise07.art_id,preise08.art_id) as art_id, ; nvl(preise08.stk_preis,preise07.stk_preis) as stk_preis, ; preise08.stk_preis - preise07.stk_preis as aenderung ; from preise07 full join preise08 on ; preise07.art_id = preise08.art_id ; order by 1
Machen Sie einen Vorschlag, wie die Nullwerte der neuen Spalte „Änderung“ behandelt werden sollten! |