SQL Server - Fehlen von NATURAL JOIN / x JOIN y USING (Feld)

8

Ich habe gerade auf NATURAL JOIN / USING - SQL92-Funktionen gelesen, die (leider?) im aktuellen Repertoire von SQL Server fehlen.

Hat jemand von einem DBMS, das diese unterstützt, zu SQL Server (oder einem anderen nicht unterstützenden DBMS) - waren sie so nützlich wie sie klingen, oder eine Dose Würmer (was auch möglich klingt!)?

    
Will A 18.07.2010, 22:53
quelle

5 Antworten

15

Ich benutze niemals NATURAL JOIN , weil ich die Möglichkeit nicht mag, dass der Join etwas tun kann, was ich nicht beabsichtige, nur weil ein Spaltenname in beiden Tabellen existiert.

Ich verwende gelegentlich die USING Join-Syntax, aber genauso oft stellt sich heraus, dass ich eine komplexere Join-Bedingung benötige, als USING unterstützen kann, also wandle ich sie in die äquivalente ON -Syntax um.

    
Bill Karwin 18.07.2010, 23:01
quelle
8

Würdest du ein DBMS betrachten, das wirklich relational ist ?:

  

in Tutorial D [wirklich relational   Sprache], der einzige "Join" -Operator ist   JOIN genannt, und es bedeutet "natürlich   mach mit ... "Es sollte keine andere Art geben   of join ... Wenige Leute hatten die   Erfahrung mit einem richtigen   relationale Sprache. Von denen, die   Ich vermute stark, dass keiner von   Sie beschwerten sich über einige   empfundene Unannehmlichkeiten bei der Paarung   Spalten nach ihren Namen

Quelle: Die Bedeutung von Spaltennamen "von Hugh Darwen

    
onedaywhen 19.07.2010 08:10
quelle
2

Verwandte SO Frage: ist NATURAL JOIN besser als SELECT von WHERE in Bezug auf die Leistung?

Ein NATÜRLICHER JOIN ist keine praktische Abkürzung: es ist geradezu gefährlich. Es ist ziemlich selten in DBMS.

VERWENDUNG ist explizit, aber angesichts seiner Einschränkungen können Sie es nicht überall verwenden, also wäre ON konsistent, nein?

    
gbn 19.07.2010 03:41
quelle
1

Ich sehe den Wert der USING- oder NATURAL-Syntax nicht. Wie Sie festgestellt haben, wird nur ON konsequent implementiert, so dass es am besten aus Sicht der Portabilität ist.

Explizit ist auch besser für die Wartung, außerdem können die Alternativen zu begrenzt sein, um mit Situationen umzugehen. Ich würde auch bevorzugen, dass meine Codebasis konsistent ist.

    
OMG Ponies 19.07.2010 00:06
quelle
1

Es ist eine Frage der Bequemlichkeit. Nicht unentbehrlich , aber es sollte seinen Platz haben, zum Beispiel bei der interaktiven Abfrage (jeder Tastendruck bringt uns näher an RSI heran) oder einige einfache Fälle von handgeschriebenem SQL selbst im Produktionscode (ja, das habe ich geschrieben. Und sogar JOIN USING in seriösem Code gesehen, geschrieben von weisen Programmierern außer mir selbst. Aber ich schweife ab).

Ich habe diese Frage gefunden, als ich nach der Bestätigung suchte, dass SS diese Funktion vermisst, und ich habe sie bekommen. Ich wundere mich nur über die Menge an Hass gegen diese Syntax, die ich dem Sauren Traubensyndrom zuschreibe. Ich fühle mich belustigt, wenn ich mit einem herablassenden Ton belehrt werde Süßigkeiten (sprich: syntaktischer Zucker) ist schlecht für deine Gesundheit. Du brauchst es sowieso nicht.

Was in der JOIN USING -Syntax schön ist, ist, dass es nicht nur auf Spaltennamen , sondern auch auf Spaltenalias , zum Beispiel:

, funktioniert %Vor%

Ich stimme nicht "Join using wäre besser, wenn nur (...)" . Oder das Argument, dass Sie möglicherweise komplexere Bedingungen benötigen. Aus einem anderen Blickwinkel, warum JOIN ON verwenden? Warum nicht rein sein und alle Bedingungen in die WHERE -Klausel verschieben?

%Vor%

Ich könnte jetzt verrückt werden und streiten, wie dies die sauberste Art ist, einen Join auszudrücken, und Sie können sofort anfangen, weitere Bedingungen in der Where-Klausel hinzuzufügen, die Sie sowieso sowieso brauchen, bla bla bla ...

Du solltest diese spezielle Syntax nicht zu sehr vermissen, aber es gibt nichts, worüber du glücklich sein könntest, wenn du es nicht hast ( "Puh, das war knapp. So gut, dass ich nicht VERBINDEN von Schmerz ").

Also, während ich persönlich JOIN ON 99% der Zeit nutze, fühle ich keine Schadenfreude, wenn es keine JOIN USING oder NATURAL JOIN gibt.

    
Tomasz Gandor 04.05.2015 07:12
quelle

Tags und Links