2014-10-24 3 views
0

У меня есть проблема с запросом для Oracle с этим сценарием:Oracle запрос с использованием 3 таблицы, SQL

Table People 
ID | Name 
1 | juan 
2 | pedro 
3 | luis 

Table Properties 
ID | nombre_inmueble | FK to Table People 
1 | house | 1 
2 | garden | 1 
3 | terrace | 1 
4 | moto | 2 
5 | jet | 2 

Table Accessories 
ID | accessories | FK Table Properties 
1 | windows | 1 
2 | doors | 1 
3 | scale | 2 
4 | plants | 3 
5 | motor | 4 

То, что я хочу, это только те люди, которые имеют свойство и которые имеют все необходимые аксессуары, в этом случае выход будет

1 | juan 

Каков будет запрос?

ответ

1

Ваш запрос будет выглядеть следующим образом:

SELECT * 
FROM People P 
WHERE EXISTS(
     SELECT 1 
     FROM Properties T 
     WHERE T.PEOPLE= P.ID 
) 
AND NOT EXISTS(
     SELECT 1 
     FROM Properties T 
     WHERE T.PEOPLE= P.ID 
     AND NOT EXISTS(
       SELECT 1 
       FROM Accessories A 
       WHERE A.Properties = T.ID 
     ) 
); 
+0

это не работает, я проверил это :( –

+0

Это покажет вам некоторые ошибки или производят вам неправильный результат – Ftaveras

+0

Неправильный результат ее строки показать 2?. : 1 | juan и 2 | pedro. И я смотрю запрос, который возвращает только 1 | juan (единственная строка, у которой есть свойства, и у каждого свойства есть Принадлежности) –

Смежные вопросы