1

2 つの異なるテーブル セットの結果を 1 つの結果に結合しようとしています。これまでの私のクエリは次のとおりです。

SELECT * 
FROM ( SELECT product_table1.product_id as product_id, sum(product_table1.qty) as quantity, sum(product_table1.paid) as amount  
FROM product_table1
LEFT JOIN table2 ON table2.id = product_table1.table2_id
WHERE product_table1.product_id IN ( SELECT id FROM products_table WHERE active = 'yes' )
AND table2.active = 'yes'
GROUP BY product_id

UNION 

SELECT product_table2.product_id as product_id, sum(product_table2.qty) as quantity, sum(product_table2.paid) as amount 
FROM product_table2
LEFT JOIN table3 ON table3.id = product_table2.table3_id
WHERE product_table2.product_id IN ( SELECT id FROM products_table WHERE active = 'yes' )
AND table3.active = 'yes'
GROUP BY product_id

) AS product_sales

そして、データがどのように戻ってくるかは次のとおりです。

product_id | quantity | amount
1            100        200
2            200        300
3            300        600
1            500        700
4            200        200

私は、これらの 2 つの数値セット (それぞれが同じ量の列とデータ型を持っている) をどのように取得し、それらを 1 つの結果セットに結合するのに PHP を導入する必要がないかを理解しようとしています。これは可能ですか?

他の解決策をいくつか見つけましたが、それらが私がやろうとしていることと一致するかどうかはわかりません。私が必要だと思う別の解決策の例ですが、確かではありません..

4

2 に答える 2

3

集計を行うだけです:

select product_id, sum(quantity) as quantity, sum(amount) as amount
from (<your query here>)
group by product_id

union allの代わりにおそらく使用したいことを付け加えますunion。2 つのソースがまったく同じ値を返す場合、おそらく両方を保持する必要があります (union重複を削除します)。

于 2013-04-03T16:04:12.960 に答える