MYSQL加入声明 - 可选表?

时间:2011-11-12 01:53:14

标签: php mysql join

好的,我会尝试让这个有意义lol。基本上我有4个不同的表我试图加入而不是做几个单独的SQL语句,因为MYSQL引擎应该能够比我更好地优化它。

基本上我有这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陈述的新手,所以如果我能做些改进,请告诉我!

感谢您的时间和帮助!!!!!

2 个答案:

答案 0 :(得分:2)

您需要做的就是在加入任务的联接之前添加left outer。即使没有任务,这也可以为您提供项目。

答案 1 :(得分:0)