【发布时间】:2018-12-22 13:58:01
【问题描述】:
我有两张桌子:users 和 tasks
表users:
+----------+---------------------+
| id | usrname |
+----------+---------------------+
| 1 | user1 |
+----------+---------------------+
| 2 | user2 |
+----------+---------------------+
| 3 | user3 |
+----------+---------------------+
| 4 | user4 |
+----------+---------------------+
表tasks
+----------+-------------------+-------------------+-------------------+
| id | users | task | calenderweek |
+----------+-------------------+-------------------+-------------------+
| 1 | user1 | task1 | 48 |
+----------+-------------------+-------------------+-------------------+
| 2 | user1 | task2 | 49 |
+----------+-------------------+-------------------+-------------------+
| 3 | user2 | task1 | 50 |
+----------+-------------------+-------------------+-------------------+
| 4 | user1 | task3 | 50 |
+----------+-------------------+-------------------+-------------------+
现在我想显示给定日历周的所有用户及其任务,即使给定日历周没有条目。
outout 应该是这样的:
calenderweek(50) 的输出:
+----------+-------------------+-------------------+
| id | users | task |
+----------+-------------------+-------------------+
| 1 | user1 | task3 |
+----------+-------------------+-------------------+
| 2 | user2 | task1 |
+----------+-------------------+-------------------+
| 3 | user3 | no task |
+----------+-------------------+-------------------+
| 4 | user4 | no task |
+----------+-------------------+-------------------+
我想我需要 Left join 和 COALESCE 的组合,但我从未使用过它们,结果为空或语法错误。
我尝试了很多东西,我无法再清楚地思考了哈哈 我的查询目前看起来像这样:
SELECT *, COALESCE(tasks.task, 'no tasks') FROM users LEFT JOIN tasks ON users.usrname = tasks.users WHERE tasks.calenderweek = '50'
那么最好的方法是什么?
【问题讨论】:
-
您在
COALESCE(tasks.task, 'no tasks')中使用no tasks,但您的数据显示为no task,无论如何都已发布。 -
最好的办法是处理应用代码中数据显示的问题
-
下次请显示您编写的代码正确完成了某些部分以及使用它的代码不起作用。 minimal reproducible example