PHP SQL内连接查询异常:无法获取关联表字段问题咨询
问题分析与解决
你的问题出在SELECT子句的字段选择上:虽然你对hotels表和locations、styles表做了内连接,但SELECT语句里只指定了hotels表的字段,完全没包含locations和styles表的关联字段,所以查询结果自然只有hotels表的信息。
修正后的代码
$stmt = $this->Connect()->prepare('SELECT hotels.id, hotels.name AS hotel_name, hotels.stars, hotels.check_in, hotels.check_out, hotels.location_id, hotels.style_id, locations.location, -- 新增locations表的location字段 styles.name AS style_name -- 新增styles表的name字段,用别名避免字段名冲突 FROM hotels INNER JOIN locations ON hotels.location_id = locations.id INNER JOIN styles ON hotels.style_id = styles.id ;');
补充说明
- 如果需要关联表的更多字段,直接在SELECT子句里添加即可,格式为
表名.字段名,必要时用AS设置别名避免字段名重复(比如两个表都有name字段) - 内连接仅返回三个表中关联条件匹配的记录,如果需要保留hotels表所有记录(即使没有对应location或style),可以改用LEFT JOIN替代INNER JOIN
内容的提问来源于stack exchange,提问作者Mat
相关产品推荐
相关产品推荐

