Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос сравнивающий две таблицы по двум столбцам / 7 сообщений из 7, страница 1 из 1
03.10.2019, 08:09
    #39870938
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
Добрый день,

Есть такой запрос:

Код: sql
1.
2.
3.
4.
5.
select ai.*, sai.*
from table1 ai
join table2 sai
on (ai.sid = sai.sid and ai.pkey = sai.pkey  and ai.node_id = sai.node_id  )
and (ai.ItemValue <> sai.value or ai.temComment <> sai.comment)



Если из него убрать последнюю строчку, то он возвращает 31 запись. Если оставить, то ничего, хотя 6 записей различаются по столбцам ItemValue /value и temComment /comment.

Подскажите пжлста, что я делаю не так? Мне нужно получить эти шесть записей, которые различаются по любому из этих столбцов.

Спасибо.
...
Рейтинг: 0 / 0
03.10.2019, 08:43
    #39870947
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
Roust_mЕсли оставить, то ничего, хотя 6 записей различаются по столбцам ItemValue /value и temComment /comment.Может, там NULL в значениях?
...
Рейтинг: 0 / 0
03.10.2019, 09:01
    #39870953
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
alexeyvgRoust_mЕсли оставить, то ничего, хотя 6 записей различаются по столбцам ItemValue /value и temComment /comment.Может, там NULL в значениях?

Да, там полно NULL. Те записи, которые отличаются, они в одной из таблиц не NULL
...
Рейтинг: 0 / 0
03.10.2019, 09:13
    #39870956
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
Roust_malexeyvgпропущено...
Может, там NULL в значениях?

Да, там полно NULL. Те записи, которые отличаются, они в одной из таблиц не NULLТогда нужно либо строить огромные конструкции с is null, либо переделать условие на:
Код: sql
1.
and (isnull(ai.ItemValue, 0) <> isnull(sai.value, 0) or isnull(ai.temComment, 0) <> isnull(sai.comment, 0))


Конечно, "0" нужно заменить на правильную константу
...
Рейтинг: 0 / 0
03.10.2019, 09:21
    #39870959
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
Roust_mДобрый день,

Есть такой запрос:

Код: sql
1.
2.
3.
4.
5.
select ai.*, sai.*
from table1 ai
join table2 sai
on (ai.sid = sai.sid and ai.pkey = sai.pkey  and ai.node_id = sai.node_id  )
and (ai.ItemValue <> sai.value or ai.temComment <> sai.comment)



Если из него убрать последнюю строчку, то он возвращает 31 запись. Если оставить, то ничего, хотя 6 записей различаются по столбцам ItemValue /value и temComment /comment.

Подскажите пжлста, что я делаю не так? Мне нужно получить эти шесть записей, которые различаются по любому из этих столбцов.

Спасибо.

Код: sql
1.
2.
3.
NOT EXISTS (SELECT ai.ItemValue INTERSECT SELECT sai.value)
AND
NOT EXISTS (SELECT ai.temComment INTERSECT SELECT sai.comment))
...
Рейтинг: 0 / 0
03.10.2019, 09:23
    #39870960
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
Код: sql
1.
2.
3.
4.
5.
select ai.*, sai.*
from table1 ai
join table2 sai
on (ai.sid = sai.sid and ai.pkey = sai.pkey  and ai.node_id = sai.node_id  )
and not exists(select ai.ItemValue, ai.temComment intersect select sai.value, sai.comment)
...
Рейтинг: 0 / 0
03.10.2019, 09:49
    #39870967
Roust_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос сравнивающий две таблицы по двум столбцам
Спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос сравнивающий две таблицы по двум столбцам / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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