MySQL: 加入多个计数

MySQL: multiple counts with join

这是我的两个 table:

[items]
- id - model - location_id -

  1    mA      23
  2    mA      23
  3    mA      23
  4    mB      24
  5    mB      24
  6    mC      25
  7    mC      26


[locations]
- id - name -

  23   aisle-3
  24   aisle-4
  25   aisle-5
  26   aisle-6

我正在尝试查询 locations table 中的位置名称,并返回该位置的项目计数。这是我尝试过但无济于事的事情:

SELECT name, COUNT(item.id)
FROM locations
INNER JOIN items AS item ON (item.location_id = locations.id)

谁能帮我解决这个问题?

您忘记了 GROUP BY:

SELECT l.*, COUNT(item.id)
FROM locations l
INNER JOIN items AS i 
ON i.location_id = l.id
GROUP BY l.id

而且,如果您想要 COUNT() 即使没有分配给该位置的项目,您也应该 LEFT JOIN 而不是 INNER JOIN