第一次尝试内部连接,事情进展顺利,只缺少最后一步从我的数据库接收正确的数据。这是我的SQL查询:
SELECT roadtrip_tblgeneral.*, roadtrip_tblhotels.hotel, roadtrip_tbllocation.location, roadtrip_tbltransport.transport
FROM roadtrip_tblgeneral
INNER JOIN roadtrip_tblhotels
ON roadtrip_tblgeneral.id = roadtrip_tblhotels.tripid
INNER JOIN roadtrip_tbllocation
ON roadtrip_tblgeneral.id = roadtrip_tbllocation.tripid
INNER JOIN roadtrip_tbltransport
ON roadtrip_tbltransport.id = roadtrip_tbltransport.tripid
WHERE roadtrip_tblgeneral.tripcode = 'cb8v73x9'
这是我从数据库中得到的响应:一切看起来都很好,但一个用户可以用相同的ID将多辆车添加到交通工具中,我想把所有这些都取回,而不仅仅是一辆。(如地铁、汽车、自行车等)
id tripname tripcode hotel location transport
1 London cb8v73x9 Seaside London Metro
最佳答案
我想这可能是你的问题
ON roadtrip_tbltransport.id = roadtrip_tbltransport.tripid
您似乎正试图基于一个独立于要联接的第一个表的条件联接两个表
看看你之前的台词,你是说:
ON roadtrip_tblgeneral.id = roadtrip_tbltransport.tripid
正如@kickstart所说,通过将select语句更改为
SELECT roadtrip_tblgeneral.*, roadtrip_tblhotels.hotel, roadtrip_tbllocation.location, GROUP_CONCAT(roadtrip_tbltransport.transport)
如果需要单独访问每种传输类型,最好在应用程序级别处理此问题,但是如果只需要一个字符串(以逗号分隔的传输模式作为单独的项),group_concat()就可以了