2016-05-24 9 views
1

Ich habe eine Tabelle X, wo es eine Eins-zu-viele-Eltern-Kind-Beziehung zu sich selbst gibt, die von parent_id Attribut behandelt wird.Finden von Kindern des Ausschließens in einer Eltern-Kind-Beziehung

| id | parent_id | type | 
|----|-----------|------| 
| 1 | -   | A | 
| 2 | -   | A | 
| 3 | -   | A | 
| 4 | 1   | B | 
| 5 | 1   | C | 
| 6 | 2   | B | 
| 7 | 3   | C | 

Ich möchte alle Zeilen vom Typ A erhalten, was die SQL-Abfrage der Zeilen zu erhalten, ist keine untergeordneten Reihen vom Typ B haben?

+0

In welcher Datenbank? Sie können verbinden durch vorherige Anweisung – SSD

+0

Ich benutze Oracle DB. – emredelioglu

Antwort

2
SELECT 
    * 
FROM 
    x AS t1 
WHERE 
    t1.type = 'a' 
     AND 0 = (SELECT 
      COUNT(*) 
     FROM 
      x AS t2 
     WHERE 
      t2.id_parent = t1.id AND t2.type = 'b') 
Verwandte Themen