mysql从不同的表中计算两个对应的行

时间:2018-04-10 09:32:00

标签: mysql

我有两张桌子,一张有不同商店的送货数量,视星期几而定。像这样:

stores
store-n | mon | tue
store 1 | 0   | 2
store 2 | 1   | 1

其中一个显示了一个产品包含多少产品。像这样:

quantum
store-n | p1 | p2 |
store 1 | 20 | 15 |
store 2 | 5  | 8  |

我需要说明每个商店在特定日期必须交付多少单品 像这样:

Count of p1 on monday:
store-n | p1*mon |
store 1 | 0      |
store 2 | 5      |

Count of p2 on tuesday:
store-n | p2*tue |
store 1 | 30     |
store 2 | 8      |

因此,产品数量乘以每家商店的送货数量。 我试过这个问题:
SELECT stores.store-n, (quantum.p1 * stores.mon) FROM quantum, stores
但似乎它将另一行中的每一行的第一行乘以另一行,然后对下一行相同,依此类推。这样做的正确方法是什么? 最后我还需要结果列的总和。

2 个答案:

答案 0 :(得分:3)

您的查询缺少连接条件,这会导致两个表之间的交叉连接。我们可以尝试更正您的原始查询,但最好使用显式连接编写它:

SELECT
    s.`store-n`,
    q.p1 * s.mon AS p1_cnt,
    q.p2 * s.tue AS p2_cnt
FROM stores s
INNER JOIN quantum q
    ON s.`store-n` = q.`store-n`;

答案 1 :(得分:0)

SELECT (store.mon * quantum.p1) AS 'p1*mon', (store.tue * quantum.p2) AS 'p2*tue' 
FROM `store` 
LEFT JOIN quantum 
ON store.store_n = quantum.store_n