2017-03-16 1 views
0

Ich bin neu in diesem Forum und ich würde wissen, wenn es möglich ist, eine schnelle Hilfe zu erhalten, um eine SQL-Abfrage in Bezug auf eine Oracle-Umgebung zu machen.SQL-Abfrage (Selfjoin)

Ich habe dies folgende Abfrage zum Beispiel:

SELECT table3.numero 
FROM table1 table1 
    INNER JOIN table2 ON table2.id = table1.tbl1_id 
    INNER JOIN table3 ON table3.id = table2.tbl2_id; 

Ich möchte eine neue Bedingung hinzuzufügen in der select (table3.numero) basierend auf dem Wert eines Feldes namens Optionen, um das gleiche Feld anzuzeigen bestehenden in der Tabelle1.

Das Optionsfeld enthält gemischte Werte (null und table1.id). Zwischen diesen Werten besteht eine Verbindung. Table1.id im Optionsfeld repräsentiert die Tabelle1.id von Datensätzen mit einem Wert von null. Wir können berücksichtigen, dass Datensätze mit einem Nullwert die Eltern von Datensätzen mit einem anderen Wert als Null sind.

Also, meine Frage ist zu wissen, ob es möglich ist, in der Auswahl eines anderen table3.numero hinzufügen, die Wert für Eltern Datensätze und ein anderes für Kinder Datensätze darstellen wird.

Ich weiß nicht genau, wie man diese Abfrage durchführt.

Vielen Dank für Hilfe.

Testdaten für tabelle1

id  options 
------ ------- 
151515 151516 
151516 
151517 
151518 151517 

table3

numero 
------ 
4333 
2452 
4245 
1121 

table3.numero (Eltern = table1.option ist null)

8844 
5515 
1518 
1444 

table3.numero (Kinder => tabelle1 .option)

8789 
5454 
3654 
2114 
+1

fügen Sie einige Beispieldaten hinzu, Ihre Anforderung ist nicht klar. – Stephen

+2

Die kurze Antwort ist, dass es höchstwahrscheinlich möglich ist, aber Sie müssen genauer sein. Beispiel für Daten und Beispiel der gewünschten Ausgabe anzeigen – Jonny

+0

Wie diese Abfrage zum Beispiel: SELECT table3.numero, table3.numero (übergeordnet), table3.numero (untergeordnete) FROM table1 table1 INNER JOIN table1 table12 ON table12.id = table1 .id und table1.options sind null (Eltern) und table1.options = table1.id (enthält die ID der übergeordneten Datensätze) –

Antwort

0

Ich glaube ich verstehe was du meinst. Ich habe Beispiele dafür erstellt, wie es klingt.

Table1

id  options 
151515 151516 
151516 
151517 
151518 151517 

Table3

id  numero 
151515 8789 
151516 8844 
151517 5515 
151518 5454 

Ergebnisse

id  numero parent child 
151515 8789 8844 8789 
151518 5454 5515 5454 

Abfrage verwendet

SELECT T3.ID,T3.NUMERO,T3_PARENT.NUMERO PARENT,T3.NUMERO CHILD 
FROM TABLE1 T1 
JOIN TABLE3 T3 ON T1.ID=T3.ID AND T1.OPTIONS IS NOT NULL 
JOIN TABLE3 T3_PARENT ON T3_PARENT.ID=T1.OPTIONS 
+0

Vielen Dank Hewills. Ich denke, das möchte ich tun. Ich werde es morgen früh versuchen, und ich werde Sie in Kontakt halten, wenn es mir das Ergebnis gibt, das ich erwarte. –