Как я могу изменить этот код VBA в SQL-запрос с помощью JOIN? - PullRequest
1 голос
/ 05 декабря 2011

Это простой вопрос, я начинаю с SQL, и у меня много проблем с ним.

У меня есть TBL_SALES и TBL_CUSTOMERS.Оба могут быть присоединены к полю CUSTOMER_ID.Клиент может иметь CUSTOMER_ID и не иметь записи в TBL_CUSTOMERS

Я хотел бы ПОДУСТИТЬ все записи в TBL_SALES, которые не имеют записи в TBL_CUSTOMERS.

Что я считаю противоположностью

SELECT UNIQUE TBL_SALES.CUSTOMER_ID, TBL_CUSTOMERS.CUSTOMER_ID
FROM TBL_SALES, TBL_CUSTOMERS
WHERE TBL_SALES.CUSTOMER_ID = TBL_CUSTOMERS.CUSTOMER_ID

Хорошо ... Я могу сделать это с помощью кода VBA, используя SEEK и NOMATCH.Но я знаю, что это не продуктивно.И если я попытаюсь использовать этот код, он не будет работать:

SELECT UNIQUE TBL_SALES.CUSTOMER_ID, TBL_CUSTOMERS.CUSTOMER_ID
FROM TBL_SALES, TBL_CUSTOMERS
WHERE TBL_SALES.CUSTOMER_ID <> TBL_CUSTOMERS.CUSTOMER_ID

Я понял, что в SQL должна быть команда 'SEEK', но я почти уверен, что это более умный способ запускаэтот запрос.

Ответы [ 2 ]

5 голосов
/ 05 декабря 2011

Попробуйте

SELECT *
FROM TBL_SALES
WHERE NOT EXISTS
(SELECT * FROM TBL_CUSTOMERS
WHERE TBL_CUSTOMERS.CUSTOMER_ID = TBL_SALES.CUSTOMER_ID)

Также возможно использовать левое соединение, которое выбирает все записи «слева», независимо от того, существуют ли записи «справа».

SELECT *
FROM TBL_SALES LEFT JOIN TBL_CUSTOMERS
ON TBL_SALES.CUSTOMER_ID = TBL_CUSTOMERS.CUSTOMER_ID
WHERE TBL_CUSTOMERS.CUSTOMER_ID IS NULL
2 голосов
/ 05 декабря 2011

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

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