0

我想计算桌子库存中的所有物品,也包括空物品。但我只能显示完整的,我尝试了几个 tuts,但它不起作用。

餐桌产品:

  • ID
  • 地位

表库存:

  • ID
  • pid(产品编号)
  • 地位

MySQL 查询:

SELECT p.id , COUNT( p.id ) AS pcount
FROM products p
LEFT JOIN stock s ON p.id = s.pid
WHERE s.status=1
  AND p.status=1
GROUP BY p.id    
ORDER BY pcount

逻辑可能有问题,因为在空库存上 s.status 永远不会是 1 ......但不要落后......我需要 OUTER JOIN 或类似的东西吗?

谢谢你的帮助!

4

2 回答 2

0

如果您只需要计算每个产品的库存行数,试试这个:

SELECT p.id , COUNT( s.id ) AS pcount
FROM products p
LEFT JOIN stock s ON p.id = s.pid
WHERE s.status=1
AND p.status=1
GROUP BY p.id    
ORDER BY pcount
于 2013-04-11T12:18:59.963 回答
0

通过添加您的 WHERE s.Status=1 将您的查询变成一个 INNER JOIN。将该条件移至 LEFT JOIN 部分

SELECT 
      p.id, 
      COUNT( s.pid ) AS pcount
   FROM 
      products p
         LEFT JOIN stock s 
            ON p.id = s.pid
           AND s.status = 1
   WHERE 
      p.status = 1
   GROUP BY 
      p.id    
   ORDER BY 
      pcount
于 2013-04-11T12:34:46.837 回答