この質問は歴史上初めてなされたものではありませんが、それでも私は有用なものを見つけていません。ユーザー(A、B、C)がより多くのタスク(クリーニング、保守、プログラミング)を持つことができ、タスクが状態(開始、一時停止、一時停止、完了)を持つことができると仮定しましょう。
SELECT username,tasks.id,subject,dateat,state FROM users
LEFT JOIN tasks ON tasks.owner_id = users.id
LEFT JOIN tasks_histories ON tasks_histories.task_id = tasks.id
ORDER BY username ASC, subject asc, dateat desc;
select * from tasks_histories;
したがって、複数のタスク状態があり、「dateat」によると、最初のレコードのみが必要です。最初または最後のレコードが必要な場合があります。を使ってみましたGROUP BY username,subject form
が、注文した日付が表示されません。
編集:
Aにタスクがないとすると、Bには2つのタスクがあります。1つの状態のtask1、3つの状態のtask2です。
したがって、これはそれを返します:
user taskid subject dateat state
A null null null null
B 9 task1 2011 5
B 10 task2 null null
B 8 task3 2011 1
B 8 task3 2012 5
B 8 task3 2013 3
しかし、私はそれが欲しい:
A null null null null
B 9 task1 2011 5
B 10 task2 null null
B 8 task3 2011 1
また
A null null null null
B 9 task1 2011 5
B 10 task2 null null
B 8 task3 2013 3