任务(编程任务列表)
execute
Assig(所有用户完成的编程任务列表)
TaskID Lang Description
---------------------------------
1 python test1
2 python test2
3 javascript test1
4 python test3
我最终想要的是如下表所示:
结果
Id TaskId UserName Lang
------------------------------------
1 1 x1 python
2 2 x1 python
3 3 x2 javascript
4 3 x1 python
我尝试了以下内容,但我无法捕获 UserName 进行显示: 所以通常声明是:
TaskID Assig.UserName Lang Completed
1 x1 python YES
2 x2 javascript NO
3 x1 python YES
4 x1 python NO
答案 0 :(得分:0)
你想要的结果"不可能
组合表是:
TaskID Lang Description assig.UserName assig.id completed
1 python test1 x1 1 TRUE
2 python test2 x1 2 TRUE
3 javascript test1 x2 3 TRUE
3 javascript test1 x1 4 TRUE
4 python test3 NULL NULL FALSE
(nb:在任务4旁边放置用户名是不可能的,该数据不存在。)
您可以从此查询中获得该结果:
SELECT
t.taskid
, t.Lang
, t.Description
, a.username
, CASE a.taskid IS NULL THEN 'FALSE' ELSE 'TRUE' END AS completed
, a.id
FROM tasks t
LEFT JOIN assig a on t.taskid = a.taskid
WHERE lang = @lang
注意,如果为任务分配了多个用户名,该查询将为正在处理该任务的每个用户重复该任务。