カラムリストの一部として持っているクエリは、通常、メインクエリのSalesOrderDetailテーブルを "参照"できます。クエリを単独で実行すると、SalesOrderDetailというテーブルが存在しないため、ProductId列を取得するためにテーブルを検索しようとすると、それを見つけることができず、エラーが発生します。
Production.ProductテーブルにProductIDが必要な行が1つしかない場合は、主にIDENTITYカラムなどを使用してIDを取得しているため、メインクエリが機能します。あなたが列リスト内のクエリは、1つの以上の結果を返すことができる場合、あなたは以下を取得することに注意する必要がありますが、将来のクエリの場合:
"Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression."
あなたは同じように簡単にサブずにクエリを書くことができますクエリ:あなたがそれのための受注を持っている場合は、常に製品を持っているだろうと思われるよう
SELECT ProductID,
UnitPrice AS SalePrice,
Product.ListPrice AS ProductListPrice
FROM Sales.SalesOrderDetail
INNER JOIN Production.Product ON Product.ProductID = SalesOrderDetail.ProductID
あなたが、ここに任意のLEFT JOIN
やAPPLY
を必要としませんか?
いつも商品があるとは限りませんが、INNER
を上記のLEFT
に変更することができます。
あなたはサブクエリだけで 'SalesOrderDetail'を持っていません。 – sqluser
''相関サブクエリ 'を探します。これは 'SQL'のかなり基本的なものです –