So verwenden Sie ein Equi-Join in SQL

Die häufigste Join, verwendet die SQL WOHER Klausel Filter ist der Equi-Join. Ein Equi-Join ist ein Grund mit einem Join WOHER Klausel, die eine Bedingung enthält, die Angabe, daß der Wert in einer Spalte in der ersten Tabelle mit dem Wert einer entsprechenden Spalte in der zweiten Tabelle gleich sein müssen. Anlegen eines Equi-Join zu den Beispieltabellen bringt eine sinnvolles Ergebnis:

SELECT * FROM Mitarbeiter, COMPENSATIONWHERE EMPLOYEE.EmpID = COMPENSATION.Employ -

Diese Abfrage liefert die folgenden Ergebnisse:

EmpID FName LName Ort Telefon Employ Gehalt Bonus ----- ------ ----- ---- ----- ------ ------ ----- 1 Whitey Ford orange 555-1001 1 33000 100002 Don Larson Newark 555-3221 2 18000 20003 Sal Maglie Nutley 555-6905 3 24000 50004 Bob Turley Passaic 555-8908 4 22000 7000

In dieser Ergebnistabelle gelten die Gehälter und Boni für das Recht auf den auf der linken Seite namens Mitarbeiter. Die Tabelle hat immer noch eine gewisse Redundanz, da die EmpID Spalte dupliziert die Beschäftigen Spalte. Sie können dieses Problem beheben, indem Sie leicht die Abfrage, wie folgt neu zu formulieren:

SELECT * ARBEITNEHMER, COMPENSATION.Salary, COMPENSATION.BonusFROM ANGESTELLTEN, COMPENSATIONWHERE EMPLOYEE.EmpID = COMPENSATION.Employ. -

Diese Abfrage erzeugt die folgende Ergebnistabelle:

EmpID FName LName Ort Telefon Gehalt Bonus ----- ----- ----- ---- ----- ------ ----- 1 Whitey Ford orange 555-1001 33000 100002 Don Larson Newark 555-3221 18000 20003 Sal Maglie Nutley 555-6905 24000 50004 Bob Turley Passaic 555-8908 22000 7000

Diese Tabelle zeigt Ihnen, was Sie wissen wollen, aber nicht belastet Sie mit irgendwelchen überflüssigen Daten. Die Abfrage ist etwas mühsam zu schreiben, aber. Um Mehrdeutigkeiten zu vermeiden, können Sie die Spaltennamen mit den Namen der Tabellen qualifizieren sie kamen. Die Eingabe dieser Tabellennamen bietet immer wieder eine gute Übung für die Finger, aber hat kein anderes Verdienst.

Sie können mit Aliase auf die Menge der Eingabe abgeholzt (oder Korrelationsnamen). Ein alias ist ein kurzer Name, der für einen Tabellennamen steht. Wenn Sie Aliase in Neufassung der vorherigen Abfrage verwenden, kommt es wie folgt aus:

SELECT E. *, C.Salary, C.BonusFROM ARBEITNEHMER E, AUSGLEICH CWHERE E.EmpID = C.Employ -

In diesem Beispiel ist E der Alias ​​für ARBEITNEHMER, und C ist der Alias ​​für die Entschädigung. Der Alias ​​ist lokal auf die Aussage drin ist. Nachdem Sie einen Alias ​​erklären (im VON Klausel), müssen Sie es in der gesamten Anweisung verwenden. Sie können nicht sowohl den Alias ​​und die lange Form des Tabellennamens in der gleichen Anweisung verwenden.

Auch wenn Sie die lange Form von Tabellennamen mit Aliase mischen könnten, würden Sie nicht wollen, da dies großen Verwirrung schafft. Betrachten Sie das folgende Beispiel:

SELECT t1.c, T2.CFROM T1 T2, T2 T1WHERE t1.c> T2.C -

In diesem Beispiel ist der Alias ​​für T1 T2 und der Alias ​​für T2 ist T1. Zugegeben, dies ist nicht eine kluge Auswahl von Alias-Namen, aber es wird nicht von den Regeln verboten. Wenn Sie Aliase mit mischen Langform Tabellennamen, kann man nicht sagen, welche Tabelle ist dem.

Das vorhergehende Beispiel mit Aliasnamen entspricht folgender WÄHLEN Erklärung ohne Aliase:

SELECT T2.C, T1.CFROM T1, T2WHERE T2.C> t1.c -

SQL ermöglicht es Ihnen, mehr als zwei Tabellen zu verknüpfen. Die maximale Anzahl variiert von einer Implementierung zur anderen. Die Syntax ist analog zu der zwei Tabelle Fall- hier ist, wie es aussieht:

SELECT E. *, C.Salary, C.Bonus, Y.TotalSalesFROM ARBEITNEHMER E, AUSGLEICH C, ytd_sales YWHERE E.EmpID = C.EmployAND C.Employ = Y.EmpNo -

Diese Anweisung führt eine auf drei Tabellen Equi-Join, Daten ziehen aus den Zeilen eines jeden entsprechenden eine Ergebnistabelle zu erzeugen, die die Verkäufer die Namen zeigt, die Höhe des Umsatzes für die sie verantwortlich sind, und ihre Vergütung. Der Vertriebsleiter kann schnell sehen, ob Entschädigung steht im Einklang mit der Produktion.

Ein Verkäufer Jahr-to-date Umsatz in einem separaten ytd_sales Tabelle Speicherung sorgt für eine bessere Leistung des Computers und die Zuverlässigkeit der Daten als die Daten in der Tabelle EMPLOYEE zu halten. Die Daten in der Tabelle EMPLOYEE ist relativ statisch. Eine Person, die Name, Adresse und Telefonnummer nicht sehr häufig ändern. Im Gegensatz dazu ändern sich die Jahr-to-date Umsatz häufig (hoffentlich).

Da die ytd_sales Tabelle weniger Spalten als die Tabelle EMPLOYEE hat, können Sie in der Lage sein, es schneller zu aktualisieren. Wenn im Laufe Verkaufssummen der Aktualisierung, die Sie nicht die Tabelle EMPLOYEE berühren, verringern Sie das Risiko einer versehentlich zu modifizieren Mitarbeiterinformationen, die die gleiche bleiben sollte.

Menü