Если у меня есть таблица 1 под названием «ФАЙЛЫ» и таблица 2 под названием «Сети», а значение, которое входит в FILES.Network_ID, должно быть из списка, определенного в Networks.Network_ID
Если бы я хотел запустить запрос, чтобы узнать, есть ли какие-либо значения под network_id в таблице 1, которые не определены в таблице 2, я попробовал следующее, которое, по-видимому, не работает ... Кроме того, я использую представление SQL MS ACCESS
SELECT *
FROM (FILES f LEFT JOIN Networks
ON f.Network_ID <> Networks.Network_ID)


Этот запрос не будет работать должным образом, потому что вы пытаетесь присоединиться, если идентификаторы не совпадают, поэтому в идеале при соединении строки будут совпадать
Например, если таблица Files содержит строки с идентификатором сети 1,2,3, а таблица Networks содержит идентификатор сети 1,2, то при присоединении вы получите комбинацию строк с идентификаторами сети [1,2], [2,1], [3 , 1], [3,2].
Экземпляр, если вы используете подзапрос, а затем отфильтруете его с помощью предложения В, будет работать
select * from files where network_id not in (select network_id from networks);
Большое спасибо! Работает как шарм! и да, я понял логику различных конфигураций на выходе моего предыдущего левого соединения. Это было так полезно.
Попробуй это
SELECT *
FROM (FILES f LEFT JOIN Networks
ON f.Network_ID =Networks.Network_ID)
Where Networks.Network_ID Is Null
Для обеспечения целостности данных создайте связь между обеими таблицами.
Связь уже установлена, Сантош, но я все еще могу ввести неверное значение в поле Network_ID? Что ты об этом думаешь
@WalidMohammed Убедитесь, что установлен флажок Enforce Referential Integrity.
Сантош, как я могу снова получить доступ к этому диалоговому окну, в котором есть проверка ссылочной целостности, когда связь уже установлена?
Дважды щелкните линию соединения.
Лучше создать связь между таблицей файлов и сетей