2017-03-27 5 views
0

相関クエリを使用して闘争し、誰かがより良い例を共有できるかどうかを知りたい/説明「相関クエリ」を作成する方法私は内側/外側のクエリが互いに依存していることを理解していますが、私の解決策が正確であるとは思わないし、コーディング時には非常に確信しています。ここに作業クエリの例を示します。クエリを関連クエリに変換する方法

SELECT p.productid, p.productname, SUM(od.unitprice - od.discount) * od.qty 
    AS total_amount 
    FROM Production.Products AS p 
    JOIN Sales.OrderDetails AS od 
    ON p.productid = od.productid 
    JOIN Sales.Orders AS o 
    ON od.orderid = o.orderid 
    WHERE o.shipcountry = 'USA'; 

--EDITED--Converted to Correlated Query 

これを相関サブクエリに変えたい場合、これが解決策になります。ガイダンスとアドバイスをありがとう。

SELECT productid, productname 
FROM Production.Products AS t1 
WHERE productid = (SELECT SUM(od.unitprice - od.discount) * od.qty AS 
total_amount 
    FROM Sales.OrderDetails AS od 
     JOIN Sales.Orders AS o 
    ON od.orderid = o.orderid 
    JOIN Production.Products AS t2 
    ON t2.productid = t1.productid 
    WHERE o.shipcountry = 'USA') 
GROUP BY productid, productname; 

ガイダンスとアドバイスをありがとう。

答えて

1

両方の製品やたOrderDetailsテーブルから選択されているので、あなただけの参加ベースのソリューションを使用する必要があります。

select p.productid, 
    p.productname, 
    SUM((od.unitprice - od.discount) * od.qty) as total_amount 
from Production.Products as p 
join Sales.OrderDetails as od on p.productid = od.productid 
join Sales.Orders as o on od.orderid = o.orderid 
where o.shipcountry = 'USA' 
group by p.productid, 
    p.productname 

メモsumが(また、固定)を使用しているとして添加group by句。

1

私は、これはあなたが欲しいものだと思う:

SELECT p.productid, p.productname, 
     SUM(od.unitprice - od.discount) * p.qty AS total_amount 
FROM Production.Products p JOIN 
    Sales.Orders o JOIN 
    Sales.OrderDetails od 
    ON o.orderid = od.orderid 
WHERE o.shipcountry = 'USA' 
GROUP BY p.productid, p.productname; 

相関サブクエリがここに適切ではありません。複数のテーブルから結果を返します。 GROUP Byで正しくJOINを実行してください。

+1

unitpriceとdiscountは何らかの理由でOPのOrderDetailsテーブルにあります。 – GurV

+0

はい、そこにグループを置くのを忘れました。それが適切であるかどうかは、2番目のクエリがCorrelatedサブクエリを満たしているかどうか(もちろんグループを追加する)ですか?外部問合せからのproductidが内部問合せと一致し、結果が追加されますか? – allendks45

+0

@ allendks45。 。 。私はあなたのコメントを理解していません。このバージョンは常にグループ化されています。 –

関連する問題