In den frühen Tagen von SQL wurde es als Lösung für das Problem des Umgangs mit doppelten Spaltennamen ausgewählt (siehe Hinweis unten).
So leihen Sie eine Anfrage von einer anderen Antwort aus:
SELECT P.ProductName,
P.ProductRetailPrice,
O.Quantity
FROM Products AS P
INNER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE O.OrderID = 123456
Die Spalte ProductID(und möglicherweise andere) ist beiden Tabellen gemeinsam, und da die Syntax der Verknüpfungsbedingung einen Verweis auf beide erfordert, bietet die 'Punktqualifizierung' eine Begriffsklärung.
Die bessere Lösung war natürlich, niemals doppelte Spaltennamen zuzulassen! Glücklicherweise, wenn Sie die neuere NATURAL JOINSyntax verwenden, wird die Notwendigkeit für die Bereichsvariablen Pund Overschwindet:
SELECT ProductName, ProductRetailPrice, Quantity
FROM Products NATURAL JOIN Orders
WHERE OrderID = 123456
Aber warum ist das ASSchlüsselwort optional? Ich erinnere mich an eine persönliche Diskussion mit einem Mitglied des SQL-Standardausschusses (entweder Joe Celko oder Hugh Darwen), dass sie sich daran erinnerten, dass zum Zeitpunkt der Definition des Standards das Produkt eines Anbieters (Microsoft?) Die Aufnahme und eines anderen Anbieters die Aufnahme erforderte Das Produkt (Oracle?) musste weggelassen werden. Der gewählte Kompromiss bestand darin, es optional zu machen. Ich habe kein Zitat dafür, du glaubst mir entweder oder nicht!
In den frühen Tagen des relationalen Modells schien das Kreuzprodukt (oder Theta-Join oder Equi-Join) von Beziehungen, deren Überschriften nicht disjunkt sind, eine Beziehung mit zwei gleichnamigen Attributen zu erzeugen; Codds Lösung für dieses Problem in seinem relationalen Kalkül war die Verwendung der Punktqualifikation, die später in SQL emuliert wurde (später wurde erkannt, dass die sogenannte natürliche Verknüpfung ohne Verlust primitiv war, dh die natürliche Verknüpfung kann alle Theta-Verknüpfungen und ersetzen sogar Kreuzprodukt.)
Quelle: Business System 12, Notizen zu Folien der Präsentation, die Hugh Darwen auf dem TTM Implementers 'Workshop der University of Northumbria vom 2. bis 3. Juni 2011 gehalten hat