我有一个问题......假设我有一个包含城市名称的表格。像这样的东西:
id name
1 Los Angeles
2 Madrid
我有一张供用户使用的表格:
uid username locationid hometownid
1 John 1 2
其中约翰是一名用户,其当前位置是洛杉矶,他的家乡是马德里。 无论如何我可以使用SELECT查询检索用户的当前位置名称和家乡名称在一行吗?如果不可能,您对数据库结构的变化有什么建议吗?
答案 0 :(得分:4)
是的,而且非常简单 - 只需在用户表中的每个相关字段中添加一个JOIN即可。
SELECT u.username, c1.name AS location, c2.name AS hometown
FROM users AS u
LEFT JOIN cites AS c1 ON u.locationid = c1.id
LEFT JOIN cites AS c2 ON u.hometownid = c2.id
WHERE u.id = 1 LIMIT 1;