Выборка из 2х таблиц, найти не равные строки...

f50
Дата: 25.11.2015 13:28:56
Коллеги, помогите, что то не могу запрос придумать..
задача простая, есть 2 таблицы, t1, t2. В каждой столбик c1,c2,c3. В каждой записи. Надо найти записи которых нет в двух таблицах.
например t1:
c1c2c3
111
222
121


t2:
c1c2c3
111
222
221


В результате хотелось бы получить результат:
c1c2c3
121
221


Можно в выборку добавить ещё столбец, для обозначения таблицы:
tc1c2c3
t1121
t2221


вот такая задачка... был бы 1 столбик, проблем нет, NOT IN (SELECT...) и всё... а тут что то не получается самому...
Agapov_stas
Дата: 25.11.2015 13:49:56
f50, как вариант:
SELECT c1,c2,c3, First(t) as nametable FROM(
SELECT c1, c2, c3, "t1" as t FROM t1
UNION ALL 
SELECT c1, c2, c3, "t2" as t FROM t2)
GROUP BY c1,c2,c3
HAVING COUNT(*)=1
f50
Дата: 25.11.2015 14:07:43
Agapov_stas, отличный вариант!!! Спасибо, работает как надо!!! Самые наилучшие пожелания вам!
Как вариант
Дата: 25.11.2015 14:20:45
SELECT 't1' as t, t1.c1, t1.c2, t1.c3 from t1
left  join t2  on
                 t1.c1=t2.c2 and
                 t1.c2=t2.c2 and
                 t1.c3=t2.c3
where t2.c1 is null
UNION all
SELECT 't2', t2.c1, t2.c2, t2.c3 from t2
left  join t1  on
                 t1.c1=t2.c2 and
                 t1.c2=t2.c2 and
                 t1.c3=t2.c3
where t1.c1 is null;
cxzvb
Дата: 25.11.2015 14:35:43
f50
Agapov_stas, отличный вариант!!!

Если в отдельно взятых таблицах возможно дублирование записей, то запрос может дать неверный результат.
Agapov_stas
Дата: 25.11.2015 14:38:50
cxzvb
Если в отдельно взятых таблицах возможно дублирование записей, то запрос может дать неверный результат.

Не понял немного. Можно подробнее, мне на заметку?
Спасибо.
Agapov_stas
Дата: 25.11.2015 14:44:24
cxzvb, а, теперь понял..Выходит, оба варианта не так уж и подходят ТС-у.
Agapov_stas
Дата: 25.11.2015 14:46:55
Так неверное тогда..
SELECT c1,c2,c3, First(t) as nametable FROM(
SELECT DISTINCT c1, c2, c3, "t1" as t FROM t1
UNION ALL 
SELECT DISTINCT c1, c2, c3, "t2" as t FROM t2)
GROUP BY c1,c2,c3
HAVING COUNT(*)=1
cxzvb
Дата: 25.11.2015 14:51:40
Agapov_stas
Не понял немного.

Например, добавьте в таблицу t1 четвертую запись, дублирующую третью, и посмотрите результат запроса.
Agapov_stas
Дата: 25.11.2015 14:56:56
cxzvb
Например, добавьте в таблицу t1 четвертую запись, дублирующую третью, и посмотрите результат запроса.

Да это я понял, больше не понял фразу "Если в отдельно взятых таблицах".
Вы правы.