2016-05-19 12 views
0

私は、テーブルAとテーブルBの2つのテーブルをMySQLデータベースに持っています。 prod_1が請求書102の下で販売されると、請求書102の下で単一取引で数量が登録されます。顧客が2つの商品を返却する場合、請求書102の表Bに登録されます。請求書102のProd_1とReturn_Quantity(テーブルBから)の両方から追加した後にSold_Quantity(テーブルAから)を差し引いたものです。私は単一の製品でこれを示していますが、何百もの製品があります。Mysqlでグループ化した後に2つのテーブルを結合する

問題は、それがSold_Quantity 答え102

これだけ請求書から請求書102のReturn_Quantityを差し引いたはずが、私のSQLクエリを繰り返し、両方の請求書から控除されていることです私が望むは、(4 + 3)-2 = 5でなければなりません。 4と3はテーブルAからSold_Quantity、2はテーブルBのReturn_Quantityからです

誰でもSQLクエリに関して解決策を教えてください。

Table-A: 
    Invoice_ID | Product_ID | Sold_Quantity 
     101  Prod_1   4 
     101  Prod_2   5 
     102  Prod_1   3 

Table-B: 
    Invoice_ID | Product_ID | Return_Quantity 
     101   Prod_1   2 
     101   Prod_2   1 
+1

sql-serverタグはMicrosoft SQL Serverに関するものです。あなたは 'sql-server'を削除したので、MySQLについて話しているようです。 –

答えて

0

あなたは内部結合を使用して試してみて、期待通りの結果を得ることができます:

SELECT  [Table-A].Invoide_ID, [Table-A].Product_ID, [Table-A].Sold_Quantity, 
      [Table-B].Return_Quantity, [Table-A].Sold_Quantity - [Table-B].Return_Quantity 
      AS Rem_Item 
FROM  [Table-A] INNER JOIN 
      [Table-B] ON [Table-A].Invoide_ID = [Table-B].Invoide_ID 

残りの項目は編集1 Rem_Item

enter image description here

として利用できるようになります

私がしたい答えは(4 + 3)-2 = 5であるべきです。 4と3は、テーブル-Aおよび2から Sold_Quantityあるあなたは、全体としてあなたの条件を変更してきたように、私はあなたの参考のために編集したクエリを投稿してみましょうReturn_Quantityからテーブル-B

からです:

SELECT  [Table-A].Product_ID, SUM([Table-A].Sold_Quantity) AS Total_Sold, 
       [Table-B].Return_Quantity, SUM([Table-A].Sold_Quantity) 
         - [Table-B].Return_Quantity AS Rem_Item 
FROM   [Table-A] INNER JOIN 
         [Table-B] ON [Table-A].Product_ID = [Table-B].Product_ID 
WHERE  ([Table-A].Product_ID = N'Prod_1') 
GROUP BY [Table-B].Return_Quantity, [Table-A].Product_ID 

enter image description here

+0

私がしたい答えは(4 + 3)-2 = 5でなければなりません。4と3はテーブルAからSold_Quantity、2はテーブルBのReturn_Quantityからです –

0

希望が必要です。請求書IDを一致させることによってのみ再審査されます

SELECT c1.`Invoice_ID` , c1.`Product_ID` , c1.`Sold_Quantity` , c2.Return_Quantity, Sold_Quantity - Return_Quantity AS diff 
FROM tableA c1 
LEFT JOIN tableB c2 
ON c1.Invoice_ID = c2.Invoice_ID 

編集済み回答。最高のものではないかもしれません。これがうまくいきたいです。

SELECT Product_ID , sold-back AS diff 
FROM 
(
    SELECT c1.`Product_ID` , SUM(`Sold_Quantity`) AS sold, 
      (SELECT IFNULL(SUM(c2.Return_Quantity), 0) FROM tableB c2 WHERE c2.Product_ID = c1.Product_ID) AS back 
    FROM `tableA` c1 
    GROUP BY c1.`Product_ID` 
) t 
+0

私が欲しい答えは(4 + 3) 2 = 5. 4と3はテーブルAからSold_Quantity、2はテーブルBのReturn_Quantityからです –

+0

は私の答えを更新しました。見てください –

関連する問題