我有一个warehouse_products表,用于定义仓库中的产品数量
所以假设我在表中有20条记录/行,有些行可能包含相同的产品ID,但在不同的仓库中
我需要创建select语句,为每个产品提供一行,在这一行中,我必须拥有仓库A和仓库B中的数量。
所以最后我将获得包含所有数据的10行
alt text http://img199.imageshack.us/img199/1948/stackoverflow.jpg
答案 0 :(得分:0)
这样的事情:
SELECT id, domain_id, wh_product_id, SUM(item_bom.qty_bom) qty_total
FROM warehouse_products GROUP BY id, domain_id, wh_product_id
您将无法显示 warehouse_id 。也不是 wh_product_id ,我猜 - 我把它包含在这里,但如果有20行而不是10行,请将其删除。
答案 1 :(得分:0)
select p1.wh_id as whA_id, p2.wh_id as whB_id,
coalesce(p1.p_id, p2.p_id) as p_id, p1.qty as qty_A,
p2.qty as qty_B, coalesce(p1.enabled, p2.enabled) as enabled
from warehouse_products p1
full outer join warehouse_products p2 on p1.p_id = p2.p_id
and p1.wh_id = 'A' and p2.wh_id = 'B'
<强>更新强>
我忘了MySql不支持FULL OUTER JOIN
。我现在没有时间更新查询,但有一些示例说明如何获得相同的结果here。