首页 > 解决方案 > 当我在查询中添加位置时,它现在显示计数 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_parking1 和 3COUNT = 0

标签: mysqlphpmyadmin

解决方案


在这种情况下使用 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'
)

那么你应该有适当的有效停车位。


推荐阅读