我有 3 个表,即:
products ( id, title)
Stock_in ( product_id, qty, date)
stock_out (product_id, qty, date)
我想使用连接来获取每个产品的库存变动列表。
我尝试使用基本连接连接所有 3 个表,但我的查询的问题是它返回具有进出运动的产品的行。
这是我能做的最好的,我尝试过的所有其他查询都是最糟糕的
SELECT c.title, si.qty, so.qty, si.date , so.date
FROM `products` c, stock_in si , stock_out so
where (c.id LIKE si.code OR c.id LIKE so.code)
group by c.code_id
预期结果是显示每个产品的行以及每个日期的库存变动,要么在同一行中,要么在 2 个不同的行中。
也许加入所有 3 个表是一种错误的方法,我应该分别运行 2 个查询以获取存货数据和存货数据,然后在后端合并行?那会优化吗?
您还没有聚合函数,因此您不应该使用 group by 而是使用 distinct。此外,如果表之间的行不匹配,您应该使用基于左连接的显式连接语法。
SELECT distinct c.title
, si.qty
, so.qty
, si.date
, so.date
FROM `products` c
LEFT JOIN stock_in si ON c.id = si.code
LEFT JOIN stock_out so OON c.id = so.code
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句