0

私を始めるためのちょっとしたアドバイス/ポインタを探しているデータベースへの初心者。

毎週完了する必要のあるタスクのリストとともに、多数のユーザーの詳細を保持するDBを作成する必要があります。このデータは、ジョブの週ごとの完了ステータスとともにユーザーのテーブルを表示するために使用されます。この表には、前の週のステータスも表示できるはずです。

ジョブのリストでは、新しいジョブを追加したり、古いジョブを削除したりできるようにする必要があります。

私は現在次のテーブルを持っています:

-----
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

私はここで運がなく、もちろんその「ドー」を探しています。

どんな助けでも大歓迎です。

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

結果セットをピボットするか、カーソルを使用するか、合体演算子を使用して試してみる必要があります。

このパターンに合うようにデータを取得するのははるかに簡単です

userid、job1
userid、job2
userid、job3
...
...
userid(2)、job1
userid(2)、job2
...。

このための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 に答える