mysql - 当我在查询中添加位置时,它现在显示计数 0
问题描述
COUNT
我在添加 where 子句时遇到查询未显示 0 的问题。
我有两张桌子“停车”和“活动停车”。我想获得当前时间COUNT
的有效停车位,id_parking
然后与.datetime_out
>=
parking_space
停車處 | id_parking | 停车名 | 停车位 | 停车位 | | -------------- | ------------ | ---------------- | ------------ | | 1 | 美国广播公司 | 第一街 | 35 | | 1 | 美国广播公司 | 第二街 | 50 | | 1 | 美国广播公司 | 第三街 | 150 | 主动停车 | id_active_parking | id_parking | 车牌| 日期时间_IN | | ------------------- | ------------ | ---------- | -------------------- | | 1 | 1 | 00-XXX-00 | 2018-12-16 14:00:00 | | 2 | 1 | 00-XXX-00 | 2018-12-16 14:21:34 | | 3 | 2 | 00-XXX-00 | 2018-12-16 21:35:00 | | 4 | 2 | 00-XXX-00 | 2018-12-16 22:00:00 | | 日期时间_OUT | | -------------------- | | 2018-12-16 15:00:00 | | 2018-12-16 15:21:34 | | 2018-12-16 22:35:00 | | 2018-12-16 23:00:00 |
询问:
SELECT
p.id_parking,
p.parking_name,
p.parking_location,
p.parking_space,
COUNT(ap.id_parking) AS Active
FROM
parking p
LEFT JOIN active_parking ap
ON ap.id_parking = p.id_parking
WHERE
ap.datetime_OUT >= '2018-12-16 22:16:00'
GROUP BY p.id_parking
查询结果:
| id_parking | 计数(ap.id_parking)| | -------------- | -------------------- | | 2 | 2 |
没有显示 id_parking
1 和 3COUNT = 0
解决方案
在这种情况下使用 LEFT JOIN 的原因是什么?删除 group by + count 并检查结果。我相信在这种情况下你应该使用 INNER JOIN 。您可以阅读许多地方的差异,包括wiki
如果您确实需要 p.id_parking 的所有列表,则应将 WHERE 子句移至 ON:
LEFT JOIN active_parking ap ON (
ap.id_parking = p.id_parking
AND ap.datetime_OUT >= '2018-12-16 22:16:00'
)
那么你应该有适当的有效停车位。
推荐阅读
- c# - .Net 核心社交登录在 nginx 后面不起作用
- c - 请解释C中头文件的用途和机制
- javascript - 如何汇总以在其编译(TypeScript)中包含来自另一个包的依赖项?
- javascript - 将 .catch 与异步等待一起使用会导致问题吗?
- ethereum - 只允许 admin.peers rpc 命令?
- navigation - 有没有办法在嵌入式报告的顶部导航多页数据洞察报告?
- intellij-idea - 用于定义与方法调用匹配的变量的 IntelliJ 快捷方式
- excel - 如何在 VBA 中比较日期
- scala - Scala:将多个函数转换为单个泛型函数?
- design-patterns - 使用 Clean Arch 为 Net Core 应用程序建模