2016-10-30 12 views
1

2つのテーブル、受注明細、注文があるとします。サブクエリはselect文で1行以上を返します

私はorderDateを印刷したいと思いますが、注文の状況は&です。

orderdetailsテーブルには、orderNumber、quantityOrdered、priceEach & productCodeがあります。

注文には、ステータス& orderNumberがあります。

私はこのコードを試しましたが、動作しません。

SELECT orderDate, status, (SELECT SUM(quantityOrdered * priceEach) AS prices FROM orderdetails GROUP BY orderNumber) 

FROM orders o, orderdetails od 

WHERE od.orderNumber = o.orderNumber 
+1

ここで、テーブルは日付ですか? –

+0

@KiranShakya私は彼のデータが正規化されていないと思っています。 –

+0

@KiranShakya日付が注文テーブル内にあります。 –

答えて

3

参加使用します。

SELECT t1.orderDate, 
     t1.status, 
     t2.prices 
FROM orders t1 
INNER JOIN 
(
    SELECT orderNumber, 
      SUM(quantityOrdered * priceEach) AS prices 
    FROM orderdetails 
    GROUP BY orderNumber 
) t2 
    ON t1.orderNumber = t2.orderNumber 
+0

これは完全に機能しました。本当にありがとう。 –

+0

もちろん、2分待つだけです。 –

0

あなたはシンプルで以下のように結合を実行することができますが、

select ord.date as ordereddate, ord.status, sum(od.quanityordered*od.price) as totalprice from orderdetails od inner join [order] ord 
on ord.ordernumber=od.ordernumber 
group by ord.date, ord.status 
1

あなたのアプローチが合理的です。しかし、それは次のようになります。これは相関サブクエリと呼ばれる

SELECT o.orderDate, o.status, 
     (SELECT SUM(od.quantityOrdered * od.priceEach) 
     FROM orderdetails ol 
     WHERE od.orderNumber = o.orderNumber 
     ) as Prices 
FROM orders o; 

GROUP BYの代わりにWHERE句に注意してください。

関連する問題