0

我的两个表,仅包含相关值,是:

  • xx_users(用户 ID、名称、位置)
  • xx_posts (post, user_id)

xx_users 包含所有用户,包括当前用户和发布者。

在模拟代码中,我想要实现的是:

SELECT * FROM xx_posts WHERE poster location = user location

鉴于两个表之间的交叉,我将如何处理这个?

4

4 回答 4

4

如果我很好地理解了您的问题,则解决方案可能类似于:

SELECT * from posts INNER JOIN users ON users.user_id = posts.user_id WHERE users.location = 'the location'

于 2012-12-17T18:33:42.523 回答
1

如果我正确理解了这个问题,您希望查看与当前用户(或另一个给定用户)共享位置的用户发布的所有帖子。在这种情况下:

SELECT p.* 
FROM xx_posts p 
INNER JOIN xx_users poster ON p.user_id = poster.user_id 
INNER JOIN xx_users currentuser ON u1.location = u2.location
WHERE currentuser.user_id = <the id of the user you're interested in>
于 2012-12-17T18:43:51.053 回答
0

你想要这个吗?

SELECT p.post,p.user_id,...
FROM xx_posts as p
INNER JOIN xx_users as u
ON p.user_id=u.user_id
WHERE p.location = u.location

http://www.w3schools.com/sql/sql_join_inner.asp

于 2012-12-17T18:34:56.890 回答
0

要获得两组的交集,请使用INNER JOIN

SELECT a.user_id, a.name, a.location, b.post
FROM xx_posts b
INNER JOIN xx_users a ON a.user_id = b.user_id

看到它在行动

要根据位置进行过滤,请添加:

WHERE a.location = 'Alaska'

指定列列表也是最佳实践,避免使用SELECT *.

INNER JOIN

于 2012-12-17T18:38:12.250 回答