Соедините Orders с Customers по CustomerID и выберите CustomerName, OrderDate. При INNER JOIN в приведённых данных останется только заказ клиента 2, поскольку клиентов 37 и 77 нет.
Список клиентов с датами их заказов
Соедините Orders с Customers по CustomerID и выберите CustomerName, OrderDate. При INNER JOIN в приведённых данных останется только заказ клиента 2, поскольку клиентов 37 и 77 нет.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо получить список имен клиентов и соответствующих дат их заказов, объединив таблицы Orders и Customers по полю CustomerID.
-- Таблица Orders
CREATE TABLE Orders (
OrderID INT,
CustomerID INT,
OrderDate DATE
);
-- Данные таблицы Orders
INSERT INTO Orders (OrderID, CustomerID, OrderDate) VALUES
(10308, 2, '1996-09-18'),
(10309, 37, '1996-09-19'),
(10310, 77, '1996-09-20');
-- Таблица Customers
CREATE TABLE Customers (
CustomerID INT,
CustomerName VARCHAR(100),
ContactName VARCHAR(100),
Country VARCHAR(50)
);
-- Данные таблицы Customers
INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country) VALUES
(1, 'Alfreds Futterkiste', 'Maria Anders', 'Germany'),
(2, 'Ana Trujillo Emparedados y helados', 'Ana Trujillo', 'Mexico'),
(3, 'Antonio Moreno Taquería', 'Antonio Moreno', 'Mexico');
Ответ
Соедините Orders с Customers по CustomerID и выберите CustomerName, OrderDate. При INNER JOIN в приведённых данных останется только заказ клиента 2, поскольку клиентов 37 и 77 нет.
Запрос:
SELECT c.CustomerName, o.OrderDate
FROM Orders AS o
JOIN Customers AS c ON c.CustomerID = o.CustomerID
ORDER BY o.OrderDate, o.OrderID;
Результат: Ana Trujillo Emparedados y helados и 1996-09-18. Если необходимо сохранить все заказы, включая неизвестных клиентов, замените JOIN на LEFT JOIN от Orders; имя для них станет NULL. Для списка всех клиентов независимо от заказов, наоборот, начинайте с Customers LEFT JOIN Orders. Выбор типа соединения зависит от требуемого набора строк.