So verwenden VORHANDEN, einzigartig, eindeutig, und Überlappungen in SQL-Anweisungen

Innerhalb der WHERE liegt Klausel viele Möglichkeiten für Ihre SQL-Anweisung zu ändern. Unter diesen Möglichkeiten sind die VORHANDEN, einzigartig, eindeutig, und Überlappungen Prädikate. Hier sind einige Beispiele dafür, wie diese in Ihrer SQL-Anweisungen zu verwenden.

Menu

VORHANDEN

Sie können die Verwendung VORHANDEN Prädikat in Verbindung mit einer Unterabfrage, um zu bestimmen, ob die Unterabfrage Zeilen zurückgibt. Wenn die Unterabfrage gibt mindestens eine Reihe, erfüllt das Ergebnis der VORHANDEN Zustand, und die äußere Abfrage ausgeführt wird. Betrachten Sie das folgende Beispiel:

SELECT Vorname, LastNameFROM CUSTOMERWHERE EXISTS (SELECT DISTINCT CustomerIDFROM SALESWHERE SALES.CustomerID = Kunde.Kundennr) -

Hier wird der Verkaufstabelle enthält alle Ihres Unternehmens Verkaufstransaktionen. Die Tabelle enthält die Kundennummer des Kunden, die jeden Kauf, sowie andere relevante Informationen macht. Die Tabelle CUSTOMER enthält jeder Vor- und Nachnamen des Kunden, aber keine Informationen über bestimmte Transaktionen.

Die Unterabfrage im vorherigen Beispiel gibt eine Zeile für jeden Kunden, der mindestens einen Kauf getätigt hat. Die äußere Abfrage gibt die Vor- und Nachnamen der Kunden, die die Käufe, dass die Tabelle SALES Einträge gemacht.

VORHANDEN ist äquivalent zu einem Vergleich der GRAF mit Null, wie die folgende Abfrage zeigt:

SELECT Vorname, LastNameFROM CUSTOMERWHERE 0 lt;> (SELECT COUNT (*) FROM SALESWHERE SALES.CustomerID = Kunde.Kundennr) -

Für jede Zeile in der Tabelle SALES das enthält ein Kundennummer das ist gleich ein Kundennummer in der CUSTOMER-Tabelle, diese Anweisung zeigt die Vorname und Familienname, Nachname Spalten in der Tabelle CUSTOMER. Für jeden Verkauf in der Tabelle SALES daher zeigt die Anweisung, den Namen des Kunden, den Kauf getätigt.

EINZIGARTIG

Wie man mit der VORHANDEN Prädikat, verwenden Sie die EINZIGARTIG Prädikat mit einer Unterabfrage. Obwohl die VORHANDEN Prädikat True ergibt nur dann, wenn die Unterabfrage gibt mindestens eine Zeile, die EINZIGARTIG Prädikat True ergibt nur dann, wenn keine zwei Zeilen, die von der Unterabfrage identisch sind zurückgekehrt. In anderen Worten, die EINZIGARTIG Prädikat wertet auf True nur, wenn alle Zeilen, die seine Unterabfrage gibt eindeutig sind.

Betrachten Sie das folgende Beispiel:

SELECT Vorname, LastNameFROM CUSTOMERWHERE UNIQUE (SELECT CustomerID FROM SALESWHERE SALES.CustomerID = Kunde.Kundennr) -

Diese Anweisung ruft die Namen aller neuen Kunden, für die die Datensätze der Tabelle SALES nur einen Verkauf. Da ein Nullwert einen unbekannten Wert ist, zwei Nullwerte sind nicht gleich betrachtet jedes anderes, wenn die EINZIGARTIG Schlüsselwort wird auf eine Ergebnistabelle angewendet, die nur zwei Null-Zeilen enthält, die EINZIGARTIG Prädikat True ergibt.

DISTINCT

Das DISTINCT Prädikat ist ähnlich der EINZIGARTIG Prädikat, außer in der Art und Weise es nulls behandelt. Wenn alle Werte in einer Ergebnistabelle sind EINZIGARTIG, dann sind sie auch DISTINCT von einander.

Doch im Gegensatz zu dem Ergebnis des EINZIGARTIG Prädikat, wenn die DISTINCT Schlüsselwort wird auf eine Ergebnistabelle angewendet, die nur zwei Null-Zeilen enthält, die DISTINCT Prädikat das Ergebnis falsch. Zwei Nullwerte sind nicht betrachtet sie einzigartig betrachtet werden voneinander getrennt, während zur gleichen Zeit.

Diese seltsame Situation scheint widersprüchlich, aber es gibt einen Grund dafür. In einigen Situationen können Sie voneinander zwei Nullwerte als unterschiedlich zu behandeln - in diesem Fall, verwenden Sie die EINZIGARTIG Prädikat. Wenn Sie die beiden Nullen behandeln wollen, als ob sie die gleichen sind, verwenden Sie die DISTINCT Prädikat.

OVERLAPS

Sie verwenden die OVERLAPS prädizieren, um zu bestimmen, ob zwei Zeitintervalle einander überlappen. Dieses Prädikat ist nützlich, um Konflikte Planung zu vermeiden. Wenn die beiden Intervalle überlappen, gibt das Prädikat den Wert wahr. Wenn sie sich nicht überlappen, gibt das Prädikat den Wert falsch.

Sie können ein Intervall auf zwei Arten angeben: entweder als Startzeit und einer Endzeit oder als Startzeit und eine Dauer. Hier sind einige Beispiele:

(TIME "02.55.00", INTERVAL '1' Stunde) OVERLAPS (TIME "03.30.00", INTERVAL '2' Stunde)

Das erste Beispiel gibt eine wahre weil 3.30 ist weniger als eine Stunde nach 02.55 Uhr.

(TIME "09.00.00", TIME "09.30.00") OVERLAPS (TIME "09.29.00", TIME "09.31.00")

Dieses Beispiel gibt eine wahre, weil Sie eine Minute Überlappung zwischen den beiden Intervalle haben.

(TIME "09.00.00", TIME '10: 00: 00 ') OVERLAPS (TIME '10: 15: 00', INTERVAL '3' Stunde)

Dieses Beispiel gibt eine falsche, weil die beiden Intervalle nicht überlappen.

(TIME "09.00.00", TIME "09.30.00") OVERLAPS (TIME "09.30.00", TIME "09.35.00")

Dieses Beispiel gibt eine falsche, weil, obwohl die beiden Intervalle zusammenhängend sind, sie nicht überlappen.

Menü