INNER JOIN有4张桌子

时间:2015-02-03 19:21:04

标签: php mysql join inner-join

我在连接多个表时遇到问题。当我加入三个表中的任何一个时,它会正确返回结果。例如:

SELECT jobLink.*
     , trucks.*
     , employees.* 
  FROM jobLink 
  JOIN schedule 
    ON jobLink.jobID = schedule.id 
  JOIN employees 
    ON jobLink.empID = employees.id 
 WHERE jobLink.thedate = '2014-18-07' 
   AND schedule.id =  439

将返回工作名称和工作中的所有员工。

当我加入最后一次加入时,我得到一个空洞的结果,让我相信我的订单已关闭或其他什么。我可以接受其他建议,因为可能有更好或更有效的方法来实现这一点,所以我列出了下面的表格。任何帮助表示赞赏。

jobLink表:

id     |    jobID    |   empID   |   copy   |   truck   |    thedate
_____________________________________________________________________

员工表:

id     |    name    |   abb   |   pos   |   current   
_____________________________________________________________________

货车表:

id     |    num    |   sort  
_____________________________________________________________________ 

日程表:

id     |    name    |   address   |   city   |   phone   |    email
_____________________________________________________________________

我的查询目前是:

 SELECT jobLink.*
      , trucks.*
      , employees.* 
   FROM  jobLink   
   JOIN  schedule 
     ON jobLink.jobID = schedule.id 
   JOIN employees 
     ON jobLink.empID = employees.id 
   JOIN trucks 
     ON jobLink.truck = trucks.id 
  WHERE jobLink.thedate = '2014-18-07' 
    AND schedule.id = 439

每张表都有不同数量的结果。时间表有1个结果,但其余的将根据工作人员和卡车的数量(从时间表)而有所不同。我试图产生这样的东西:

enter image description here

员工不会在卡车下面,因为我没有在数据库表中设置,但可以在员工列表之前或之后列出。提前谢谢!

1 个答案:

答案 0 :(得分:0)

是的,输出是php抱歉没有更具体... @Strawberry在与我的同事交谈后,他的建议是改变结构。通过更改结构并添加job_truck表和job_employees表,我可以通过使用内部联接来完成我需要的内容。 @RubahMalam是的我确实试过了左连接,但我无法在一个查询中完成它。谢谢你的建议。