SQL-запрос сравнения

Я занимаюсь практическими запросами, чтобы улучшить свои навыки SQL (я новичок), и я столкнулся с этой проблемой, что мне нужна помощь в использовании базы данных Northwind. Запрошенный запрос должен:

Дайте имя сотрудников и города, где они живут для сотрудников, которые продали клиентам в одном городе.

То, что я написал для этого, было:

USE Northwind; SELECT DISTINCT FirstName, LastName, e.City FROM Employees e INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID INNER JOIN Customers c ON o.CustomerID = c.CustomerID INNER JOIN Customers ON c.City = e.City WHERE e.City = ANY(SELECT Customers.City FROM Customers); 

Я вернулся 6 сотрудниками, но я не уверен, что они верны, и я считаю, что мое заявление WHERE неверно.

В основном, мой вопрос заключается в том, что я использую правильные заявления о соединении и как мне влиять на результаты фильтрации с помощью инструкции WHERE? Я не совсем уверен, как сравнивать одну конкретную запись с другими записями. Исходя из фона Java, я использую for-loops, которые могут проверять каждый отдельный «объект» (запись) с определенным полем из другого «объекта». В этом случае мне интересно, как я могу проверить атрибут City каждой записи из таблицы Employees с атрибутом City записей в таблице Customers. Любые советы приветствуются, спасибо!

Я думаю, вам нужно только один раз присоединиться к таблице клиентов и иметь оба требования (находящиеся в том же порядке и в том же городе, что и сотрудник) в качестве ваших реквизитов присоединения, например

  SELECT DISTINCT FirstName, LastName, e.City FROM Employees e INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID INNER JOIN Customers c ON o.CustomerID = c.CustomerID AND c.City = e.City 

В качестве альтернативы вы можете просто присоединиться к клиенту по идентификатору заказа и отфильтровать требование города в предложении where. Разумеется, не должно быть никакой разницы, если вы собираетесь оглянуться на сценарий в какой-то момент, это может помочь вам вспомнить

  SELECT DISTINCT FirstName, LastName, e.City FROM Employees e INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE e.City = C.City 

Я думаю, что важная часть, чтобы развязать голову, состоит в том, что после того, как вы присоединились к таблице, это фактически одна таблица с столбцами из обоих (или более с несколькими объединениями). Внутренние условия соединения будут отфильтровывать строки, которые не совпадают между двумя таблицами, а затем вы можете сравнить столбцы

Interesting Posts

Уникальная колонка, проверка существующей записи, лучший подход

Runtime динамического доступа к базе данных SQL Server с помощью разных строк подключения

запрашивая множество записей, чтобы найти шаблон, где 1 поле отличается, но 2 других совпадают (даже если они были отменены)

Как выполнить хранимую процедуру и забыть об этом с помощью C # и Entity Framework?

EF, связанные с загрузкой объектов с SQL-запросом

Как добавить в таблицу в инструкцию select

Выберите строки с одинаковым значением столбца более 3 раз

PDO dblib получить результат из хранимой процедуры

проверить RAM, файл страницы, PAE, / 3GB, память сервера SQL с помощью powershell

Просмотр, отображающий все строки из таблиц, возвращаемых отдельным запросом

использовать IF … THEN Sql query и возвращать int и String

RESTRICTED_USER

Как использовать учетную запись gmail для подписки по электронной почте ssrs

Пространственные и связанные серверы SQL Server

SQL-запрос для 7-дневной прокрутки в SQL Server

Давайте будем гением компьютера.