2017-11-15 7 views
0

こんにちは私は、Northwindデータベースのブラジルのお客様のようなこの一連の製品を注文した顧客の名前を選択したいと思います。私はブラジルの製品をここでやった:MSSQL同じ製品をお持ちのお客様

select [ProductName] 
from [dbo].[Products] join [dbo].[Order Details] on [dbo].[Products].ProductID = [dbo].[Order Details].ProductID 
join [dbo].[Orders] on [dbo].[Order Details].OrderID = [dbo].[Orders].OrderID 
join [dbo].[Customers] on [dbo].[Orders].CustomerID = [dbo].[Customers].CustomerID 
where [Country] = 'Brazil' 

何が今?どのように私はそれらを見つけることができますか?

select [CompanyName], [ProductName] 
from [dbo].[Customers] join [dbo].[Orders] on [dbo].[Orders].CustomerID = [dbo].[Customers].CustomerID 
join [dbo].[Order Details] on [dbo].[Order Details].OrderID = [dbo].[Orders].OrderID 
join [dbo].[Products] on [dbo].[Products].ProductID = [dbo].[Order Details].ProductID 
where [ProductName] in (
select [ProductName] 
from [dbo].[Products] join [dbo].[Order Details] on [dbo].[Products].ProductID = [dbo].[Order Details].ProductID 
join [dbo].[Orders] on [dbo].[Order Details].OrderID = [dbo].[Orders].OrderID 
join [dbo].[Customers] on [dbo].[Orders].CustomerID = [dbo].[Customers].CustomerID 
where [Country] = 'Brazil') 

これも動作しません:私はやってみました/

+0

あります? –

+0

dbスキーマ、サンプルデータ、現在および予想される出力を表示します。 \t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [**スタート**] http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぶことができます。 \t [**どのように、最小の完全、かつ検証例を作成する**](http://stackoverflow.com/help/mcve) \t \t [**ヒントより良いSQLの質問**](HTTPS: //meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question/271056#271056) –

答えて

0

スキーマが間違っていると思います。ブラジルからの製品ブラジルの製品を購入する顧客その後サプライヤー

SELECT ProductID 
    FROM Products P 
    JOIN Suppliers S 
    ON P.SupplierID = S.SupplierID 
    WHERE S.Country = 'Brazil' 

に対してチェック必要は何doesntの仕事

SELECT DISTINCT C.CustomerID 
FROM Customer C 
JOIN Orders O 
    ON C.CustomerID = O.CustomerID 
JOIN OrderDetails OD 
    ON O.OrderID = OD.OrderID 
WHERE OD.ProductID IN (SELECT ProductID 
         FROM Products P 
         JOIN Suppliers S 
          ON P.SupplierID = S.SupplierID 
         WHERE S.Country = 'Brazil') 
+0

あなたの質問を正しく理解しているかどうかは確かではありませんでした。助けてくれてうれしいですが、次回の質問ではより正確になります;) –

0

を仕入がちょうどそこからそれを選択し、元のクエリでCustomerテーブルの上にあるので。

select 
    [CompanyName] 
    , [ProductName] 
from 
    [dbo].[Products] 
    join 
     [dbo].[Order Details] 
     on 
      [dbo].[Products].ProductID = [dbo].[Order Details].ProductID 
    join 
     [dbo].[Orders] 
     on 
      [dbo].[Order Details].OrderID = [dbo].[Orders].OrderID 
    join 
     [dbo].[Customers] 
     on 
      [dbo].[Orders].CustomerID = [dbo].[Customers].CustomerID 
where 
    [Country] = 'Brazil' 
+0

今、私はブラジルの会社と製品だけを持っています。仕事は同じ製品で他の国から顧客を選ぶことです –

+0

ああ..私はあなたが「ブラジルの製品をやった」と言って、エイリアスを使わないので、[カントリー]は製品のためだと思いました。 – JamieD77

0

私は(明確ではない言葉で表現される)あなたの質問を理解していれば、あなたがする必要があるすべてではなく、ネストされたクエリを実行するので、あなたのselect声明に[Customer]を追加することです。あなたの質問は顧客の名前を選択するよう頼んでいるので、それはではなく、ではありません。

希望に役立ちます。

関連する問題