データベースの複数のテーブルからデータを取得する必要があり、1つのクエリを使用する必要があります。私が抱えている問題は、プロジェクトごとにいくつのタスクがあり、いくつのタスクが完了したかを数える必要があることです。
私はこれらのテーブルを手に入れました:
プロジェクト:
id name start_date end_date project_leader finished
1 project_1 2012-08-01 00:00:00 2012-29-01 00:00:00 2 0
ユーザー
id username password email status
1 user_1 pass_1 email_1 1
2 user_2 pass_2 email_2 1
user_has_project
userid projectId
1 1
タスク
id project description end_date user finished
1 1 test description 1 2012-29-01 00:00:00 1 1
2 1 test description 2 2012-29-01 00:00:00 1 0
だから私がする必要があるのは、私にこの結果を与えるはずのクエリを作成することです:
欲しい結果:
project_id project_name start_date end_date project_leader finished tasks finished_tasks
1 project_1 2012-08-01 00:00:00 2012-29-01 00:00:00 user_2 0 2 1
完了したタスクの量を数える必要がある部分まで、それを機能させました。これまでにこのクエリを取得しましたが、完了したタスクはまだカウントされていません。これどうやってするの?
クエリ:
SELECT projects.id,
projects.name,
projects.start_date,
projects.end_date,
projects.finished,
users.username AS project_leader,
COUNT(tasks.id) AS tasks
FROM projects
LEFT JOIN tasks ON (tasks.project = projects.id)
JOIN user_has_project ON (user_has_project.projectId = projects.id)
JOIN users ON (projects.project_leader = users.id)
WHERE user_has_project.userId = 1
GROUP BY projects.id