我在内部连接多个表时遇到问题。当我加入三个表中的任何一个时,它都会正确返回结果。例如:
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 个结果,但其余结果将根据工作中的员工和卡车数量(来自时间表)而有所不同。我正在尝试制作这样的东西:
员工不会最终出现在卡车下面,因为我没有在数据库表中设置该设置,但可以在员工列表之前或之后列出。提前致谢!
最佳答案
是的,输出是 php 抱歉,没有更具体... @Strawberry 在与我的一位同事交谈后,他的建议是更改结构。通过更改结构并添加一个 job_truck
表和一个 job_employees
表,我可以使用内部联接来完成我需要的操作。 @RubahMalam 是的,我确实尝试过左连接,但我无法在一个查询中完成它。谢谢您的建议。
关于php - 带有 4 个表的 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307025/