2014-09-01 3 views
0

У меня 3 таблицы таблицы a, b и c. Я хочу (select * from a intersect select * from b intersect select * from c) union (select * from a intersect select * from b) это дает ошибку «(» Синтаксическая ошибка Без «()» он работает хорошо, но он не может дать правильный результат.Как получить объединение 3 таблиц в sqlite?

ответ

0

SELECT в круглых скобках является подзапросом, но compound queries должен быть построен из «нормальных» запросов.

Использование скобок для составных операторов группы является правильным, но тогда вы должны добавить отдельную ВЫБРАТЬ на верхнем уровне:

SELECT * FROM (SELECT * FROM a 
       INTERSECT 
       SELECT * FROM b 
       INTERSECT 
       SELECT * FROM c) 
UNION 
SELECT * FROM (SELECT * FROM a 
       INTERSECT 
       SELECT * FROM b) 

(Примечание: эта конструкция на самом деле не имеет смысла; (A   ⋂   в   ⋂   С)   ⋃   (а   ⋂   в) такая же, как A   ⋂ B.  )

+0

благодарит за вашу помощь. –

-1
(select * from a) 
    union 
((select * from b) minus (select * from a)) 
    union 
((select * from c) minus ((select * from a) union (select * from b))) 

Первая часть таблицы а. Вторая часть таблицы б кроме внахлест с столом. Третья часть таблицы с исключением перекрывается таблице А или б. Союз этих трех частей является объединением трех таблиц.

Вен схема трех рабочих таблиц (кружки), может помочь понять.

+0

Это не является действительным данных SQL. –

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