powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка из 2х таблиц, найти не равные строки...
15 сообщений из 15, страница 1 из 1
Выборка из 2х таблиц, найти не равные строки...
    #39113080
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, помогите, что то не могу запрос придумать..
задача простая, есть 2 таблицы, t1, t2. В каждой столбик c1,c2,c3. В каждой записи. Надо найти записи которых нет в двух таблицах.
например t1:
c1c2c3111222121

t2:
c1c2c3111222221

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

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

вот такая задачка... был бы 1 столбик, проблем нет, NOT IN (SELECT...) и всё... а тут что то не получается самому...
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113103
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f50, как вариант:
Код: sql
1.
2.
3.
4.
5.
6.
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
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113130
f50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stas, отличный вариант!!! Спасибо, работает как надо!!! Самые наилучшие пожелания вам!
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113146
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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;
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113161
cxzvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
f50Agapov_stas, отличный вариант!!!
Если в отдельно взятых таблицах возможно дублирование записей, то запрос может дать неверный результат.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113165
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cxzvbЕсли в отдельно взятых таблицах возможно дублирование записей, то запрос может дать неверный результат.
Не понял немного. Можно подробнее, мне на заметку?
Спасибо.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113174
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cxzvb , а, теперь понял..Выходит, оба варианта не так уж и подходят ТС-у.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113177
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так неверное тогда..
Код: sql
1.
2.
3.
4.
5.
6.
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
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113184
cxzvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Agapov_stasНе понял немного.
Например, добавьте в таблицу t1 четвертую запись, дублирующую третью, и посмотрите результат запроса.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113188
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cxzvbНапример, добавьте в таблицу t1 четвертую запись, дублирующую третью, и посмотрите результат запроса.
Да это я понял, больше не понял фразу "Если в отдельно взятых таблицах".
Вы правы.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113190
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cxzvbAgapov_stasНе понял немного.
Например, добавьте в таблицу t1 четвертую запись, дублирующую третью, и посмотрите результат запроса.Во втором варианте 18470919 , если нет различения записей по ключу, спасает DISTINCT.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113335
Во втором варианте 18470919, если нет различения записей по ключу, спасает DISTINCT.
или юнион без олл?
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39113366
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариантВо втором варианте 18470919, если нет различения записей по ключу, спасает DISTINCT.
или юнион без олл?Исключит ли это дубликаты, принадлежащие одной таблице?
Что-то затрудняюсь...
Проверить сейчас не на чем...
Описание "По умолчанию записи, повторяющиеся в объединяемых таблицах и запросах, не включаются в результирующее множество запроса. Использование предиката ALL в запросе позволяет включить все записи." в этом смысле, мне кажется, можно понимать по-разному.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39114660
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__MichelleКак вариантпропущено...

или юнион без олл?Исключит ли это дубликаты, принадлежащие одной таблице?Наконец-то проверила. Да. Исключит.
...
Рейтинг: 0 / 0
Выборка из 2х таблиц, найти не равные строки...
    #39114798
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взял на заметку...
По умолчанию повторяющиеся записи при использовании операции UNION не возвращаются, однако включение в инструкцию предиката ALL обеспечивает возврат всех записей.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка из 2х таблиц, найти не равные строки...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]