2013-04-11 40 views
0

我想統計表股票中的所有項目,也是空的。 但我只能顯示完整的,我嘗試了幾個嘖嘖,但它沒有工作。MySQL加入空統計

表產品:

  • ID
  • 狀態

表股票:

  • ID
  • PID(產品ID)
  • 狀態

我的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還是類似的?

感謝您的幫助!

回答

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 
+0

正是這個問題。我搜索了幾個小時,並在這裏得到答案。非常感謝! – user2270134 2013-04-11 12:50:39

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 
+0

這看起來差不多相同的輸出,它計數行數,但空行不計數。或者至少沒有設置pcount .. – user2270134 2013-04-11 12:30:18

+0

什麼是你的空行?一條沒有股票的線? – JoDev 2013-04-11 12:43:57

+0

是的,空股票的意思是。但問題解決了。不管怎麼說,還是要謝謝你! – user2270134 2013-04-11 12:51:31