如何在 JOIN MySQL 中进行 GROUP BY 和 COUNT(*)

How to do GROUP BY and COUNT(*) in JOIN MySQL

我有名为 company、product、purchase_order、skid、process_record 的表,我想要 MySQL 查询结果如下。

我试过了

SELECT s.id as skidId, s.skidBarcode, po.poNumber, s.companyId, c.companyName, p.productId , p.productName, totalProcessed 
FROM skid s 
INNER JOIN company c ON s.companyId = c.id 
INNER JOIN purchase_order po on s.purchaseOrderId = po.id 
INNER JOIN product prdct on p.productId = prdct.id 
LEFT JOIN (SELECT skidID, productId , COUNT(*) as processedQuantity FROM process_record GROUP BY productId ) p ON p.skidID= s.id 
WHERE s.status = 'closed' ORDER By s.companyId,s.id

但是,此查询结果在某些行上给出了 processedQuantity 计数 NULL 和随机错误计数。

如何获得所需的 MySQL 查询输出,如屏幕截图所示?

我添加了 GROUP BY skidID, productId 而不是 GROUP BY productId,它解决了问题。

 SELECT s.id as skidId, s.skidBarcode, po.poNumber, s.companyId, c.companyName, p.productId , p.productName, totalProcessed 
    FROM skid s 
LEFT JOIN (SELECT skidID, productId , COUNT(*) as processedQuantity FROM process_record GROUP BY skidID, productId ) p ON p.skidID= s.id 
    INNER JOIN company c ON s.companyId = c.id 
    INNER JOIN purchase_order po on s.purchaseOrderId = po.id 
    INNER JOIN product prdct on p.productId = prdct.id 
    
    WHERE s.status = 'closed' ORDER By s.companyId,s.id