我有3张桌子:
用户:
id name
1 Jack
2 Vasya
3 John
4 Robert
5 Dmitry
6 Dylan
城市:
id city
1 London
2 Kyiv
3 New-York
4 Chicago
5 Moscow
6 Dubai
users_cities :
user_id city_id
1 1
3 1
5 6
2 3
4 5
6 6
我需要使用JOIN选择杰克在伦敦的杰克的用户(users.id = 1)或迪拜的用户使用Dmitry(users.id = 5)。 我怎么能这样做?
我尝试过:
SELECT `u`.`username`, `uc`.`city_id` FROM `users` as `u`
INNER JOIN `users_cities` as `uc` ON `u`.`id` = `uc`.`user_id`
INNER JOIN `users_cities` as `uc1` ON `uc1`.`city_id` = `uc`.`city_id`
WHERE `u`.`id` = 1
它返回:
username city_id
Jack 1
Jack 1
答案 0 :(得分:0)
你非常接近。对于您的查询,您只需要paste(txt, collapse = " ") -> txt
到JOIN
一次。然后使用user_cities
子句确定您要过滤的用户或城市。
如果您想要结果集中的城市名称,请进行从WHERE
到user_cities
的其他加入。
当您在相同的结果集(cities
)上加入两次时,您实际上是在两次查询结果,这就是为什么您会获得重复的“Jacks”。
如果这不是您所需要的,请调整user_cities
子句以确定您希望如何过滤结果集。
WHERE