gpt4 book ai didi

php - 从同一个表连接

转载 作者:行者123 更新时间:2023-11-29 23:09:03 25 4
gpt4 key购买 nike

我尝试加入同一个表“travel_plan”两次,因为我需要的值是 location_fromlocation_to,然后我可以在其中加入该值到我的城市表来获取城市名称。

SELECT * FROM travel_plan 
LEFT JOIN Cities ON Cities.CityID = travel_plan.location_to AS plan_to
LEFT JOIN Cities ON Cities.CityID = travel_plan.location_from AS plan_from
LEFT JOIN user_table ON travel_plan.user_id = user_table.id
ORDER BY date_from DESC LIMIT 0,4") or die(mysql_error());

最佳答案

当您多次加入同一个表时,您需要正确使用表别名,正如您在此查询中使用 Cities 所做的那样。

     SELECT * 
FROM travel_plan AS tr
LEFT JOIN Cities AS C1 ON C1.CityID = tr.location_to
LEFT JOIN Cities AS C2 ON C2.CityID = tr.location_from
LEFT JOIN user_table AS us ON tr.user_id = us.id
ORDER BY date_from DESC
LIMIT 0,4

按照您编写查询的方式,LEFT JOIN AS 子句放错了位置,并且未用于限定列名称。

然而,这种SELECT *的使用确实不是最理想的。从这个四表 JOIN 中,SELECT * 会退回大量具有重复名称的列,这会扰乱 php 中的 _fetch_assoc() 方法。

最好的办法是枚举您获取的列,并提供别名,这样它们就不会具有相同的名称。我不知道你的列的名称,所以我必须猜测,但它会是这样的。

SELECT us.name, us.id AS userid, 
C1.cityname AS to_cityname,
C2.cityname AS from_cityname,
FROM ....

提取每一行后,您将在 $result['from_cityname'] 中找到值。

关于php - 从同一个表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com