MySQL 未从计数和外连接中获取零行

MySQL Not getting rows with zero from count and outer join

对于在线游戏,我有两个表格,一个列出了所有品种(马种),另一个列出了每个动物(马),我想列出每个品种的存活动物总数并由成员拥有(所有者!= 0)。我得到的结果是具有值但不是计数为零的行。我知道我需要一个外部连接,但我不能正确地构建它吗?

这里是查询:

$breedquery = mysql_query("SELECT COUNT(H.breed) AS totalbreed, H.breed FROM horses H RIGHT JOIN horsebreeds B ON H.breed = B.breedname WHERE H.owner != 0 GROUP BY H.breed ORDER BY totalbreed DESC");

这是结果的快照,如您所见,它适用于 return 具有 1 个或多个但忽略具有零的品种

snapshot of results

感谢您对问题的任何帮助!

LEFT JOIN 通常优于 RIGHT JOIN -- ` 左连接将所有行保留在第一个 table 中,这通常更易于遵循。

SELECT COUNT(H.breed) AS totalbreed, B.breedname
FROM horsebreeds B LEFT JOIN
     horses H   
     ON H.breed = B.breedname AND H.owner <> 0
GROUP BY B.breedname
ORDER BY totalbreed DESC;

那么你需要做两个改变:

  1. ON 子句中将过滤器放在 owner 上。否则,您会将外部联接变成内部联接。
  2. horsebreeds 中的列用于 GROUP BYSELECT