Php 如何从连接5个不同表的mysql数据库中检索数据
我试图从5个不同的表中检索mysql数据库中的数据,但它没有正常工作,也没有显示任何内容 表格如下: 网站信息 场地坐标 所有者信息 分包商信息 公司信息 网站信息: 站点ID 公司ID -站点名称 所有者 分包商 设备类型 场地坐标: 站点ID 纬度 经度 高度 所有者信息: 所有者 所有者姓名 所有者联系人 分包商信息: 分包商 分包公司 分包名称 分包合同 公司信息: 公司ID 公司名称 mysql查询:Php 如何从连接5个不同表的mysql数据库中检索数据,php,mysql,inner-join,Php,Mysql,Inner Join,我试图从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;