【发布时间】:2019-08-14 09:33:17
【问题描述】:
我正在为一个项目编写一个预订系统,目前正在努力内置一些报告功能。我需要返回今天日期所有课程的列表,无论他们是否有预订。
我遇到的问题是当没有预订时,我没有从 sql 查询中得到任何返回,但是当有预订时,我得到了正确的信息。如果我从选择中删除预订计数,那么一切正常,但是我需要所有这些信息。
SELECT
class_instances.instance_sdate,
classes.class_name,
classes.class_max,
users.user_name_first,
users.user_name_last,
COUNT(bookings.booking_id)
FROM
`computing-project`.class_instances class_instances,
`computing-project`.classes classes,
`computing-project`.users users,
`computing-project`.bookings bookings
WHERE
DATE(class_instances.instance_sdate) = DATE(NOW()) AND
class_instances.class_id = classes.class_id AND
classes.teacher_id = users.user_id AND
bookings.instance_id = class_instances.instance_id
以上代码仅在有人预订课程时有效。当班级没有预定的成员时不会。
我仍然得到返回为 0 的计数,但其他列没有其他结果
- 希望这是有道理的。
预期输出
+-----------------------+------------+-----------+-----------------+----------------+----------------------------+
| instance_sdate | class_name | class_max | user_name_first | user_name_last | count(bookings.booking_id) |
+-----------------------+------------+-----------+-----------------+----------------+----------------------------+
| 2019-03-23 16:38:00.0 | Test | 11 | Louis | Simpson | 0 |
| 2019-03-23 16:39:00.0 | Test2 | 12 | Louis | Simpson | 0 |
+-----------------------+------------+-----------+-----------------+----------------+----------------------------+
【问题讨论】:
-
从不在
FROM子句中使用逗号。 始终使用正确、明确、标准JOIN语法。 -
老实说,我对使用 join 语法的 sql 很陌生,你知道我将如何将其转换为 join 吗?
-
我仍然得到返回为 0 的计数,但其他列没有其他结果如果没有预订,应该还有什么其他结果?
-
@Lksimo 。 . .你甚至不应该学习在
FROM子句中使用逗号。你应该只学习JOIN。有很多在线和离线学习 SQL 的资源。 -
欢迎来到 Stack Overflow。我知道您是该网站的新手,所以如果可以的话,我会提供一些建议。首先,您的问题实际上非常好 - 但请不要将示例数据作为图像发布。相反,将它作为文本包含在问题中,这样人们就可以使用它而不必重新输入所有内容——我们大多数人都不会这样做。其次,甚至更好的是,访问 SQL 测试站点,例如 sqlfiddle.com 或 dbfiddle.uk,设置您的表并用数据填充它们,然后人们可以使用它来帮助您找到问题的解决方案.祝你好运。
标签: mysql sql mysql-python