Показать имена клиентов, которые заказали тот же набор продуктов, что и клиенты из Бразилии - PullRequest
0 голосов
/ 05 ноября 2018

Microsoft Sql Server 2017, база данных Northwind.

Привет всем, я все еще пытаюсь сделать этот вопрос на сервере SQL, но я сложил, и я не знаю, как это сделать. Пожалуйста, дайте мне несколько советов, как кусать это: P

select *     
from

(select companyname, products.productid, productname,[Order Details].OrderID
    from [order details], orders, customers, products
    where [order details].orderid=orders.orderid AND
          orders.customerid=customers.customerid AND
          [order details].productid=products.productid) c1
    inner join
    (select companyname, products.productid, productname, [Order Details].OrderID
    from [order details], orders, customers, products
    where [order details].orderid=orders.orderid AND
          orders.customerid=customers.customerid AND
          [order details].productid=products.productid  AND
          Customers.Country='Brazil') c2
          on c1.productId=c2.productId and c1.productname=c2.productname

1 Ответ

0 голосов
/ 05 ноября 2018

Я не уверен, должны ли клиенты в Бразилии быть исключены из полученных данных, но чтобы указать вам правильное направление, рассмотрите следующий запрос:

select c.*
from
    (
        select distinct o.productid
        from [order details] o inner join customers c
        on o.customerid = c.customerid
        where c.country = 'Brazil'
    ) p
    inner join [order details] o on p.productid = o.productid
    inner join customers c on o.customerid = c.customerid

Здесь, вложенная выборка получает различный набор продуктов, приобретенных клиентами в Бразилии. Результат этого выбора затем присоединяется к вашей таблице order details, чтобы получить всех клиентов, которые приобрели такие продукты (включая бразильцев).

...