SQL - JOIN mit UNION ?? UNION mit JOIN?

7

Diese Frage wurde mir in einem meiner Interviews gestellt. Können Sie mit dem UNION-Schlüsselwort JOIN verwenden? Können Sie UNION mit dem Schlüsselwort JOIN verwenden?

Das ist - 1. Ich sollte die gleiche Ausgabe wie JOIN erhalten, ohne das Schlüsselwort JOIN zu verwenden, aber UNION Schlüsselwort? 2. Ich sollte die gleiche Ausgabe wie UNION ohne UNION-Schlüsselwort erhalten, aber mit JOIN-Schlüsselwort?

Können Sie mir ein Beispiel dafür geben, wie das möglich ist?

    
rkd 05.07.2011, 22:45
quelle

4 Antworten

9

Ein Interview ist der Rahmen, in dem Sie Ihre Waren aufstellen. Denken Sie daran: Beantworten Sie keine Fragen;)

Denken Sie an eine Pressekonferenz: Der Sprecher möchte keine schwierigen Fragen aus den Journalen beantworten, um sich selbst zu fangen. Vielmehr suchen sie nach Fragen, auf die sie bereits eine Antwort haben, nämlich die Informationen, die sie veröffentlichen wollen (und nicht mehr!)

Wenn ich in einem Interview mit dieser Frage konfrontiert würde, würde ich damit mein Wissen über relationale Algebra demonstrieren, denn das wäre es, was ich in das Interview mit der Absicht getan hätte; Ich bin wachsam für die "Rede über relationale Algebra hier" Frage und das wäre es.

Vereinfacht gesagt ist JOIN das Gegenstück zu logischem UND, während UNION das Gegenstück zu logischem ODER ist. Daher könnten ähnliche Fragen mit Konventionslogik lauten: "Können Sie UND verwenden ODER?" und "Können Sie ODER verwenden UND?" Die Antwort würde davon abhängen, was Sie sonst verwenden könnten, z.B. NOT könnte nützlich sein;)

Ich wäre auch versucht, die Unterschiede zwischen der Menge der primitiven Operatoren, der Menge der Operatoren, die für die Vollständigkeit der Berechnungen notwendig ist, und der Menge der für praktische Zwecke benötigten Operatoren und Shorthands zu diskutieren.

Der Versuch, die Frage direkt zu beantworten, wirft weitere Fragen auf. JOIN impliziert "natürlichen Join" in relationaler Algebra, während in SQL INNER JOIN impliziert. Wenn sich die Frage speziell auf SQL bezieht, müssen Sie für alle JOIN -Typen antworten? Was ist mit UNION JOIN ?

Um ein Beispiel zu verwenden, ist die äußere Verknüpfung von SQL bekannt als UNION . Chris Date drückt es besser aus, als ich jemals hoffen könnte:

  

Outer Join ist ausdrücklich darauf ausgelegt   produzieren Nullen in ihrem Ergebnis und sollten   daher in der Regel vermieden werden.   Relational gesprochen ist es eine Art von   Schrotflinte Ehe: Es zwingt Tabellen   in eine Art Union - ja, ich meine   Union, nicht beitreten - auch wenn die Tabellen   fraglich nicht entsprechen   übliche Voraussetzungen für die Vereinigung (vgl   Kapitel 6). Es tut dies tatsächlich   indem Sie eine oder beide Tabellen auffüllen   mit Nullen vor der Vereinigung,   Dadurch werden sie denen angepasst   übliche Voraussetzungen immerhin. Aber   Es gibt keinen Grund, warum das Padding   sollte nicht mit den richtigen Werten gemacht werden   anstelle von Nullen

SQL und Relationale Theorie, 1. Ausgabe von CJ Datum

Das wäre ein guter Diskussionspunkt, wenn "Ich hasse Nullen" etwas ist, was Sie im Interview vermitteln wollten!

Dies sind nur ein paar Gedanken, die Ihnen in den Sinn kommen. Der entscheidende Punkt ist, dass der Interviewer Ihnen mit diesen Fragen eine Filiale anbietet. Was wirst DU daran hängen? ;)

    
onedaywhen 06.07.2011, 09:37
quelle
9

Da dies eine Interviewfrage ist, testen sie Ihr Verständnis dieser beiden Funktionen.

Die wahrscheinliche Antwort, die sie erwarten, lautet: "Im Allgemeinen können Sie dies nicht, da sie unterschiedliche Aktionen ausführen". Sie erklären dies genauer, indem Sie angeben, dass eine Union Zeilen an das Ende der Ergebnismenge anfügt, wo sie sich verbindet fügt weitere Spalten hinzu.

Die einzige Möglichkeit, mit der Sie Join und Union arbeiten können, ist, wo Zeilen nur Daten von einer der beiden Quellen enthalten:

%Vor%

Ist das Gleiche wie:

%Vor%

Oder nur mit einer Spalte, in der die Typen übereinstimmen:

%Vor%

Ist das Gleiche wie:

%Vor%

Ein Fall, in dem Sie dies tun würden, ist, wenn Sie Daten über mehrere Tabellen erzeugen, aber Sie wollen alle zusammen sehen, aber ich würde empfehlen, eine UNION in diesem Fall anstelle eines FULL OUTER JOIN wegen der Abfrage zu verwenden tun, was Sie sonst erwarten würden.

    
Seph 06.07.2011 00:46
quelle
1

Meinst du sowas?

%Vor%

(geschrieben in SQL Server 2008)

UNION funktioniert, wenn beide SELECT -Anweisungen die gleiche Anzahl an Spalten haben UND die Spalten die gleichen (oder mindestens ähnlichen) Datentypen haben.
UNION ist egal, wenn beide SELECT Anweisungen wählen Daten nur aus einer einzelnen Tabelle aus, oder wenn eine oder beide bereits JOIN s auf mehr als einer Tabelle haben.

    
Christian Specht 05.07.2011 23:02
quelle
1

Ich denke, es hängt auch von anderen verfügbaren Operationen ab.

Wenn ich mich gut erinnere, kann UNION mit einem FULL OUTER join ausgeführt werden:

%Vor%     
ypercubeᵀᴹ 06.07.2011 00:07
quelle

Tags und Links