2011-11-12 7 views
0

さて、私はこのことを笑うようにしようとします。基本的に私はいくつかの別々のSQL文を実行するのではなく、MYSQLエンジンができるよりも最適化できるように、私は4つのテーブルを持っています。MYSQL Joinステートメント - オプションのテーブル?

基本的に私は、これらの4つのテーブルを持っている:

projects (key:id) 
project_users (key:project_id , user_id) 
users (key:id) 
tasks (key:project_id) 

は、これが私のクエリです:

 SELECT projects.*, users.*, tasks.*, 
    FROM 
    projects JOIN (project_users JOIN 
        users ON 
        project_users.user = users.id) 
     ON projects.id = project_users.project_id 
     JOIN (tasks) 
       ON projects.id = tasks.project_id 
     WHERE projects.company = 2 ORDER BY projects.id 

基本的に私はその中のプロジェクト、そのプロジェクト内のユーザー、およびタスクのリストを取得しようとしています特定の会社のプロジェクト。

問題 - このプロジェクトにタスクがない場合、そのプロジェクトは返されません。私はまだそのプロジェクトを必要としていますが、そのプロジェクトのためには0のタスクしかありません。

私はJOINの声明に新しくなったので、私ができることがいくつか改善されているなら、私に知らせてください!

あなたの時間とご感想に感謝!!!!!

+1

私はSQLの中毒者ではありませんが、最初の考えは、プロジェクトのリストとタスクのリストが必要な場合、それは本当に2つのクエリです... –

+0

まあ、それらはどちらもキー値。つまり、プロジェクトを取得する代わりに、それらのプロジェクトでタスクのリストを取得することを意味します。 –

+0

PHPでは、クエリの結果を繰り返し処理するときにプロジェクトのリストを収集するつもりですか? –

答えて

2

です。これは、タスクがなくてもプロジェクトを得ることができます。