MySQL join, count and group by 多个数据库

标签 mysql count group-by left-join

我有这个工作查询

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/

相关文章:

php - 如何插入带有单引号 ' 符号的字符串

php - 多个文件上传不会将所有文件插入数据库

mysql - 如何对一张表中的相同(参数)记录进行求和和分组 MySQL

pandas - 如何计算具有多列整数的数据帧中行的重复项

mysql - 从 Eloquent 查询计数

php - 如何使用group by统计mysql数据

r - 在R中按组查找最长的值序列

python - 对两个数组进行分组和标准化

MySql多删除

mysql - 连接表以从两个表中选择数据时出错