Правое соединение в составном ключе - Access SQL - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь найти строки, в которых данные доступны только в таблице B, но этот SQL код работает некорректно, результат такой же, как при внутреннем соединении

 SELECT DISTINCT B.code_localisation, B.nom_poste, B.Batiment, B.Panneau
 FROM A RIGHT JOIN B 
 ON (A.code_localisation = B.code_localisation) AND (A.Panneau = B.Panneau)
 WHERE (A.code_localisation IS NULL AND A.Panneau IS NULL)

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Используйте предложение where внутри соединения,

SELECT DISTINCT B.code_localisation, B.nom_poste, B.Batiment, B.Panneau
 FROM A RIGHT JOIN B 
 ON (A.code_localisation = B.code_localisation AND A.Panneau = B.Panneau
AND A.code_localisation IS NULL AND A.Panneau IS NULL)
0 голосов
/ 26 мая 2020

Я бы посоветовал NOT EXISTS:

select b.*
from b
where not exists (select 1
                  from a
                  where a.code_localisation = b.code_localisation and
                        a.Panneau = b.Panneau
                 );

Это должно быть эквивалентно вашему right join, поэтому я не на 100% уверен, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...