我不确定如何表达我的问题,如果有点困惑,我们深表歉意。希望下面的内容会把它弄清楚一点。
这是我目前正在运行的查询:
select business.name, ifnull(sum(checkin.count),0) as checknum from checkin inner join business on business.id = checkin.business_id where business.state = 'NY' group by business.name order by checknum desc;
而且它几乎按预期工作。 NY还有一项业务,在checkin表中没有任何计数,但我无法将其输出。
这是我当前的输出:
+----------------------------------------+--- ------+
|姓名 |校验码 |
+------------------------------------+-------- -+
|湖畔咖啡 | 31 |
|麦当劳 | 18 |
|瓦莱罗 | 15 |
|安吉洛比萨和烧烤店| 13 |
|吉诺披萨 | 8 |
|桑迪的熟食店 | 7 |
|北翠贝卡豪华公寓住宅 | 2 |
|马特和纳特 | 2 |
|菲利安的晚餐 | 2 |
|松鼠巢餐厅和酒吧| 2 |
|最好的 friend 家庭晚餐 | 1 |
|中国自助餐 | 1 |
|桑迪的乡村厨房 | 1 |
|迪克乡村商店 | 1 |
+------------------------------------+-------- -+
但我需要捕获没有任何签到的最后一家公司。不确定如何进一步解决这个问题。
最佳答案
您需要使用right join
而不是inner join
。
左连接将返回关系右侧的所有行,无论左侧的任何键是否匹配。
关于如果表没有特定条目,MySQL 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472290/