gpt4 book ai didi

Mysql场景-即使没有条目也获取所有任务?

转载 作者:行者123 更新时间:2023-11-29 15:05:53 26 4
gpt4 key购买 nike

我有三张 table

  1. Tasks,其中包含 Taskid、Taskname
  2. TaskAllocations 包含列 Taskid、EmpNum
  3. TaskEntries 包含列 TaskId、EmpNum、WorkedDate、Hoursspent

现在我想获取特定一周内的所有任务条目。这里我的问题是,即使没有针对特定任务的 Taskentry,我也应该在查询结果集中至少得到一行包含该 TaskId 和 Hoursspent 为 Null 的任务名称。我一直在尝试通过以下查询来获取此信息。

SELECT A.TaskId, 
B.TaskName,
SUM( C.HoursSpent ) as TotalHours ,
C.WorkedDate, C.Comments
FROM TaskAllocations A
LEFT OUTER JOIN TaskEntries C
ON A.TaskId = C.TaskId
AND A.EmpNum = C.EmpNum
INNER JOIN Tasks B
ON A.TaskId = B.TaskId
WHERE A.EmpNum =123456
AND C.WorkedDate
IN ('2010-01-17','2010-01-18','2010-01-19',
'2010-01-20','2010-01-21','2010-01-22','2010-01-23' )
GROUP BY A.TaskId, C.WorkedDate
ORDER BY A.TaskId,C.WorkedDate ASC ';

我从这个 SQL 片段中得到的是当且仅当存在特定任务 id 的条目时,那么只有我才能得到该行。但我想要的是为 EmpNum 可用的每个任务至少获取一行。即使我为每个 TaskId 和 WorkedDate 组合获取一行也没有问题。请在这件事上给予我帮助。这样做的实际目的是构建一个 HTML 二维表,其中每个任务条目都对应日期和任务,如下所示。

    ---------------------------------------------------------    TaskId  TaskName   Sun  Mon  Tue  Wed  Thu  Fri  Sat    ---------------------------------------------------------    18      name1       2          3        4:30      3:30    19      name2                                               20      name3       4                             2:30    22      name4       2:30    23      name5          24      name6       1:30               6                    ---------------------------------------------------------

这样用户就可以在每年的每周更新它。首先我想到了group_concat,但由于性能原因,我使用普通的分组查询。

<小时/>

注意:对于特定的任务 ID 和工作日期,只有一项花费的小时数。我几乎已经构建了前端。即使没有条目,请帮助我获取上述所有任务 ID。我需要使用子查询吗?

最佳答案

不要使用内部联接,使用左联接或右联接,具体取决于您想要来自哪些表的哪些值。

所以:

SELECT *
FROM tasks t
LEFT JOIN taskentries te
ON t.id = te.id

这与以下语句相同:

SELECT *
FROM tasksentries te
RIGHT JOIN tasks t
ON te.id = t.id

即使没有任务条目,也会为您提供所有任务

内连接只会在两个表中都有行时选择行,左连接会选择左(第一个)表中的所有行并从另一行匹配(如果没有这样的行,则 null 将为所有列)。右连接将执行相反的操作:从右(第二个)表中选择所有行并从左表中匹配。

a LEFT JOIN bb RIGHT JOIN a

相同

关于Mysql场景-即使没有条目也获取所有任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com