我有这个工作查询
SELECT t1.id as stockid, t1.description as stockdescription, t2.inkoop as price , COUNT(t2.inkoop) as cnt,
(t2.inkoop * COUNT(t2.inkoop)) as totalamount
FROM database1.table_products t1
LEFT JOIN database1.table_stock t2 ON t1.id = t2.stock_id
WHERE 1
GROUP BY t2.inkoop
ORDER BY t1.id ASC
1 个数据库,2 个表: t1 是带有 ID 和描述的产品“描述”数据库 t2 是库存,其中有很多产品以什么价格(购买)并由 stock_id 引用
Output:
id stockdescription price cnt totalamount
1 Product1 1067 15 16005
1 Product1 1290 103 132870
2 Product2 2750 70 192500
3 Product3 500 0 0
但现在我有了第二个数据库 (database2) 和第二个库存表 (stock2)(与 database1.table_stock 的结构完全相同)
我如何更改我的查询以便我也可以添加“cnt2”并更改我的结果总数?
Like this:
id stockdescription price cnt cnt2 totalcnt totalamount
1 Product1 1067 15 0 15 16005
1 Product1 1290 103 0 103 132870
2 Product2 2750 70 5 75 206250
3 Product3 500 0 4 4 2000
最佳答案
您可以连接多个表,但您会得到两个股票表的完整连接,这意味着您在 GROUP BY
之后会得到错误的计数。您可以通过嵌套查询来避免这种情况,例如按照这些思路:
SELECT sub.*, COUNT(stock2.inkoop) AS cnt2
FROM ( <paste your query here> ) AS sub
LEFT JOIN database2.stock2 AS stock2 ON sub.stockid = stock2.stock_id
GROUP BY sub.stockid
ORDER BY sub.stockid ASC
现在您有两个左联接,每个左联接都有自己的 GROUP BY
。因此每个左连接只能看到一个左 watch 因子,并且您不会因一次连接太多表而导致重复。
关于MySQL join, count and group by 多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13074720/