php - 带有 4 个表的 INNER JOIN

标签 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

将返回作业名称及其下该作业的所有员工。

一旦我加入最后一个加入,我就会得到一个空结果,让我相信我的订单已关闭或其他什么。我愿意接受其他建议,因为可能有更好或更有效的方法来完成此任务,因此我在下面列出了我的表格。如有任何帮助,我们将不胜感激。

工作链接表:

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

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

最佳答案

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

关于php - 带有 4 个表的 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307025/

相关文章:

MySQL:根据列数选择多个表

mysql - Sum 和 Group By 问题

mysql - 在 SQL (MySQL) 中根据表 1 中的不同 ID 计算表 2 中的不同字段

mysql - 为什么 SQL 返回太多结果?

php - mySQL:从多行获取所有位置的值

php - react 本地axios ios不针对apache/php进行身份验证

php - 检查 cakephp 中的用户是否喜欢选定的行

javascript - window.open 无法正常工作,解析 URL 被 chop

php - 将 JSON 转换为 Array 并获取类型

MySql 从不同的表中获取匹配的名字