第一次尝试内部连接,事情进展顺利,只缺少最后一步从我的数据库接收正确的数据。这是我的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()就可以了

09-11 18:17