Php 如何从连接5个不同表的mysql数据库中检索数据

Php 如何从连接5个不同表的mysql数据库中检索数据,php,mysql,inner-join,Php,Mysql,Inner Join,我试图从5个不同的表中检索mysql数据库中的数据,但它没有正常工作,也没有显示任何内容 表格如下: 网站信息 场地坐标 所有者信息 分包商信息 公司信息 网站信息: 站点ID 公司ID -站点名称 所有者 分包商 设备类型 场地坐标: 站点ID 纬度 经度 高度 所有者信息: 所有者 所有者姓名 所有者联系人 分包商信息: 分包商 分包公司 分包名称 分包合同 公司信息: 公司ID 公司名称 mysql查询: 我的错误在哪里?还有更好的方法吗?我只需更改为左连接即可解决此问题 因此,更新后的查

我试图从5个不同的表中检索mysql数据库中的数据,但它没有正常工作,也没有显示任何内容

表格如下:

网站信息 场地坐标 所有者信息 分包商信息 公司信息 网站信息:

站点ID 公司ID -站点名称 所有者 分包商 设备类型 场地坐标:

站点ID

纬度

经度

高度

所有者信息:

所有者 所有者姓名 所有者联系人 分包商信息:

分包商 分包公司 分包名称 分包合同 公司信息:

公司ID 公司名称 mysql查询:
我的错误在哪里?还有更好的方法吗?

我只需更改为左连接即可解决此问题

因此,更新后的查询看起来:

select 
site_info.siteID,site_info.siteNAME ,site_info.equipmentTYPE,site_coordinates.latitude,site_coordinates.longitude,site_coordinates.height ,owner_info.ownerNAME,owner_info.ownerCONTACT,company_info.companyNAME,subcontractor_info.subcontractorCOMPANY,subcontractor_info.subcontractorNAME,subcontractor_info.subcontractorCONTACT from `site_info`
LEFT JOIN `owner_info`
on site_info.ownerID = owner_info.ownerID 
LEFT JOIN `company_info` 
on site_info.companyID = company_info.companyID
LEFT JOIN `subcontractor_info` 
on site_info.subcontractorID = subcontractor_info.subcontractorID
LEFT JOIN `site_coordinates` 
on site_info.siteID=site_coordinates.siteID 
where owner_info.ownerID = 159 

感谢您的评论和回答

查询语法正确。由于您面临输出问题,请检查您的关系代数。您是否在它们之间使用了正确的联接条件?如果这两个表中的每个表都有一个公共属性,您可以在不提供条件的情况下执行自然连接ie,那么公共属性将被排序,我将使用别名“AS”关键字编写这样复杂的查询

SELECT
     site_info.siteID,
     site_info.siteNAME,
     site_info.equipmentTYPE,
     site_coordinates.latitude,
     site_coordinates.longitude,
     site_coordinates.height,
     owner_info.ownerNAME,
     owner_info.ownerCONTACT,
     company_info.companyNAME,
     subcontractor_info.subcontractorCOMPANY,
     subcontractor_info.subcontractorNAME,
     subcontractor_info.subcontractorCONTACT        
FROM `site_info` AS SI JOIN `owner_info` AS OI
  ON SI.ownerID = OI.ownerID 
  JOIN `company_info` AS CI
  ON SI.companyID = CI.companyID 
  JOIN `subcontractor_info` AS SUBI
  ON SI.subcontractorID = SUBI.subcontractorID 
  JOIN `site_coordinates` AS SC
  ON SI.siteID=SC.site_id
WHERE owner_info.ownerID = 159;

尝试将每个内部联接都设置为左联接,并让我们知道您是否返回了记录。这就是错误函数的作用。您是否收到任何错误,或者只是没有返回任何数据?没有错误phpmyadmin显示此消息MySQL返回了一个空的结果集,即零行。查询花费了0.0005秒。好的,所以您的查询没有问题,只是它没有返回任何数据。我们不能告诉你为什么,我们不知道你的数据库的内容…关于所有者信息,左加入x。。。其中x。。。与内部联接x相同。。。
SELECT
     site_info.siteID,
     site_info.siteNAME,
     site_info.equipmentTYPE,
     site_coordinates.latitude,
     site_coordinates.longitude,
     site_coordinates.height,
     owner_info.ownerNAME,
     owner_info.ownerCONTACT,
     company_info.companyNAME,
     subcontractor_info.subcontractorCOMPANY,
     subcontractor_info.subcontractorNAME,
     subcontractor_info.subcontractorCONTACT        
FROM `site_info` AS SI JOIN `owner_info` AS OI
  ON SI.ownerID = OI.ownerID 
  JOIN `company_info` AS CI
  ON SI.companyID = CI.companyID 
  JOIN `subcontractor_info` AS SUBI
  ON SI.subcontractorID = SUBI.subcontractorID 
  JOIN `site_coordinates` AS SC
  ON SI.siteID=SC.site_id
WHERE owner_info.ownerID = 159;