0

関連する値のみが含まれている私の2つのテーブルは次のとおりです。

  • xx_users(user_id、name、location)
  • xx_posts(post、user_id)

xx_usersには、現在のユーザーと投稿者を含むすべてのユーザーが含まれます。

モックコードでは、私が達成しようとしているのは次のとおりです。

SELECT * FROM xx_posts WHERE poster location = user location

2つのテーブル間のクロスオーバーを考えると、これにどのようにアプローチしますか?

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

2つのセットの共通部分を取得するには、次を使用します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 に答える