Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Zeige m, wo nicht n

m:n-Beziehungen haben so ihre Tcken: Wenn Sie beispielsweise alle Bestellungen anzeigen mchten, die einen bestimmten Artikel nicht enthalten, ist das nicht so einfach. Um den Einsatz einer Unterabfrage kommen Sie da nicht herum.

Ausschlieende Unterabfrage

Alle Bestellungen anzuzeigen, die einen bestimmten Artikel enthalten, ist kein Problem - erzeugen Sie einfach eine Abfrage mit den beteiligten Tabellen (m-Seite, n-Seite und Verknpfungstabelle) und verwenden Sie das gewnschte Feld der n-Seite als Kriterium. Die passende Abfrage zeigt Bild 1.

Bild 1: Diese Abfrage liefert alle Bestellungen mit einem bestimmten Artikel

Diese Abfrage ist indirekt der Schlssel zur eigentlichen Lsung: Wenn Sie wissen, welche Bestellungen alle einen bestimmten Artikel enthalten, dann knnen Sie damit auch alle verbleibenden Bestellungen ermitteln. Dazu verwenden Sie obige Abfrage einfach als Unterabfrage in einem Kriterium.

Dabei ist eins zu beachten: Die Unterabfrage darf nur ein Feld ausgeben - in dem Fall das Feld Bestell-Nr.

Die Lsung finden Sie in Bild 2. Der nicht komplett zu erkennende SQL-Ausdruck in der Kriterienspalte lautet so:

Nicht In (SELECT Bestellungen.[Bestell-Nr] FROM Bestellungen INNER JOIN (Artikel INNER JOIN Bestelldetails ON Artikel.[Artikel-Nr] = Bestelldetails.[Artikel-Nr]) ON Bestellungen.[Bestell-Nr] = Bestelldetails.[Bestell-Nr] WHERE (((Artikel.[Artikel-Nr])=[Artikelnummer]));)

 

Bild 2: Eine Unterabfrage als Kriterium schmeit alle Bestellungen raus, die einen bestimmten Artikel enthalten

© 2003-2015 André Minhorst Alle Rechte vorbehalten.