0

テーブル在庫のすべてのアイテムと空のアイテムをカウントしたい。しかし、私は完全なものしか表示できません。いくつかのツットで試しましたが、うまくいきませんでした。

テーブル製品:

  • 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 または同様のものが必要ですか?

ご協力いただきありがとうございます!

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 に答える