MySQL-多对多关系上的求和
我有以下两个表格:MySQL-多对多关系上的求和,mysql,Mysql,我有以下两个表格: ORDERS_ENTRIES orders_id | products_id | entry_id | quantity 1111 | 14492 | 1 | 1 1112 | 14492 | 1 | 3 及 我正试图通过以下查询查找SUMORDERS_ENTRIES.quantity以及products_stocks的数量: SELECT oe.entry_id as entry, SUM(oe.quantity) as qty, ps.qua
ORDERS_ENTRIES
orders_id | products_id | entry_id | quantity
1111 | 14492 | 1 | 1
1112 | 14492 | 1 | 3
及
我正试图通过以下查询查找SUMORDERS_ENTRIES.quantity以及products_stocks的数量:
SELECT
oe.entry_id as entry,
SUM(oe.quantity) as qty,
ps.quantity as ps_qty
FROM
ORDERS_ENTRIES oe
INNER JOIN
PRODUCT_STOCKS ps
ON
oe.entry_id = ps.entry_id;
WHERE
oe.products_id = 14492;
GROUP BY
ps.entry_id;
但是,由于多对多关系,返回的结果会多次计算金额
预期答复:
oe.entry_id | oe.quantity | ps.quantity
1 | 4 | 4
1 | 4 | 2
但我得到了以下答案:
oe.entry_id | oe.quantity | ps.quantity
1 | 8 | 4
1 | 8 | 2
如何执行此操作?通过观察,您似乎希望首先按条目id汇总订单条目表中的数量,然后将此结果加入产品库存表: 输出: 此处演示:
这是因为在联接表中存在多个匹配记录。可以避免在子查询中使用group by重复
SELECT
oe.entry_id as entry,
oe.qty,
ps.quantity as ps_qty
FROM
(SELECT entry_id, SUM(quantity) as qty FROM ORDERS_ENTRIES GROUP BY entry_id) AS oe
INNER JOIN
PRODUCT_STOCKS ps
ON
oe.entry_id = ps.entry_id;
WHERE
oe.products_id = 14492;
GROUP BY
ps.entry_id;
SELECT oe.entry_id,
oe.qty,
ps.quantity AS ps_qty
FROM
(
SELECT entry_id, SUM(quantity) AS qty
FROM ORDERS_ENTRIES
GROUP BY entry_id
) oe
INNER JOIN PRODUCT_STOCKS ps
ON oe.entry_id = ps.entry_id
SELECT
oe.entry_id as entry,
oe.qty,
ps.quantity as ps_qty
FROM
(SELECT entry_id, SUM(quantity) as qty FROM ORDERS_ENTRIES GROUP BY entry_id) AS oe
INNER JOIN
PRODUCT_STOCKS ps
ON
oe.entry_id = ps.entry_id;
WHERE
oe.products_id = 14492;
GROUP BY
ps.entry_id;