0

数据库的菜鸟,正在寻找一些建议/指针来帮助我入门。

我需要创建一个数据库来保存一些用户的详细信息以及他们必须每周完成的任务列表。然后,此数据将用于显示用户表以及作业的每周完成状态。该表也应该能够显示我前几周的状态。

作业列表必须允许添加新作业和删除旧作业。

我目前有以下表格:

-----
User
-----
ID
Name
Email

A number of users will be entered into this table.


----
Job
----
ID
Name
Description

A list of jobs (starting at 4) which each user has to mark as completed each week, this list must be able to grow.


---------
WorkDone
---------
ID
User_ID
Job_ID
Timestamp

Used to record when a user has marked a job as complete.

我的桌子结构还好吗,还是我从错误的角度来看这个?我需要编写一个允许我返回的查询:

User.ID (1)  |  Job 1 completed status  |  Job 2 completed status  |  Job (n) completed status
User.ID (2)  |  Job 1 completed status  |  Job 2 completed status  |  Job (n) completed status
User.ID (n)  |  Job 1 completed status  |  Job 2 completed status  |  Job (n) completed status

我在这里没有运气,我只是在寻找那个“doh”当然的时刻。

任何帮助表示赞赏。

4

1 回答 1

0

如果你想要返回的结果像

userid, job 1 status,job 2 status, job 3 status
userid(2), job 1 status,job 2 status, job 3 status

您需要旋转结果集,使用游标,或者使用 coalesce 操作符运行 try。

让数据适应这种模式会容易得多

用户 ID,作业 1
用户 ID,作业2
用户 ID,作业 3
...
...
用户 ID(2),作业 1
用户 ID(2),作业 2
....

用于此的 sql 将基于设置运行得更快

Select * 
from join workdone as w 
inner join job as j on w.jobid = j.jobid
inner user as u on u.userid = w.userid
于 2013-01-28T16:10:04.533 回答