Wie bekomme ich die Mitarbeiter mit ihren Vorgesetzten?

8

So soll die Ausgabe aussehen:

%Vor%

Folgendes habe ich bekommen:

%Vor%

Ich kann nicht finden, warum das Managerfeld leer ist.

Hier ist die Tabelle:

%Vor%

14 Zeilen ausgewählt.

    
user770022 17.09.2011, 01:02
quelle

5 Antworten

26

Dies ist ein klassischer Self-Join, versuchen Sie Folgendes:

%Vor%

Und wenn Sie den Präsidenten ohne Manager einfügen möchten, verwenden Sie anstelle eines inneren Join einen äußeren Join in der Oracle-Syntax:

%Vor%

Oder in ANSI-SQL-Syntax:

%Vor%     
Xint0 17.09.2011, 01:15
quelle
2

Vielleicht denkt Ihre Unterabfrage (SELECT ename FROM EMP WHERE empno = mgr) , geben Sie mir die Mitarbeiterdatensätze, die ihre eigenen Manager sind! (d. h. wo das Empno einer Zeile dasselbe ist wie das mgr der selben Zeile.)

Haben Sie vielleicht in Betracht gezogen, dies neu zu schreiben, um einen inneren (Selbst-) Join zu verwenden? (Ich frage, weil ich nicht einmal sicher bin, ob das Folgende funktioniert oder nicht.)

%Vor%     
Funka 17.09.2011 01:14
quelle
2
%Vor%

Es gibt keine Datensätze in EMP, die diese Kriterien erfüllen.

Sie müssen sich selbst verbinden, um diese Beziehung zu erhalten.

%Vor%

BEARBEITEN:

In der Antwort, die Sie ausgewählt haben, wird Ihr Präsident nicht aufgeführt, da es sich um einen inneren Join handelt. Ich denke, du wirst zurück sein, wenn du feststellst, dass deine Ausgabe nicht das ist, was deine (vermutlich) Hausaufgabe erfordert. Hier ist der eigentliche Testfall:

%Vor%

Der Unterschied besteht darin, dass ein äußerer Join alle Zeilen zurückgibt. Ein innerer Join erzeugt Folgendes:

%Vor%     
Brian Roach 17.09.2011 01:05
quelle
2

VERSUCH DIESES

%Vor%

In der Unterabfrage verwenden Sie self join

    
Pramod Deshmukh 15.12.2016 09:24
quelle
1

Sie könnten Ihre Abfrage so geändert haben:

%Vor%

Dies würde der Engine mitteilen, dass empno für die innere emp-Tabelle mit der mgr-Spalte der äußeren Tabelle abgeglichen werden sollte.

    
Lambs 18.09.2011 05:46
quelle

Tags und Links