0

研究目的で、ユーザーをフォローできる twitter そっくりのサイトがあります。今、ログインした人をフォローしているすべてのユーザーを取得したいと思います。

次のテーブルには 3 つの行があります。id、user_id、follow_id

ユーザー 1 がユーザー 2 をフォローする場合、行の値は次のようになりますuser_id = 1follow_id= 2

しかし、同じ follow_id を持つユーザーを取得しようとすると、代わりに user_id 2 のみが返されます。そして、follow_id=2 を持つすべてのユーザーではありません

何か案が ?

SELECT 
    user.id, user.username, user.email,
    userdetails.profile_img, following.follow_id 
FROM 
    user 
JOIN 
    userdetails ON user.id = userdetails.user_id 
JOIN 
    following on user.id = following.follow_id 
WHERE 
    following.follow_id = 2 

うちのテーブルはこんな感じ

Following
id | user_id | follow_id

Tweets
user_id|id|date|message

user
id|email|password|username

userdetails
id|firstname|lastname|profile_img|user_id|about

任意のヒント ?

4

3 に答える 3

2

で変更JOIN following on user.id = following.follow_idJOIN following on user.id = following.user_idます。

SELECT 
    user.id, user.username, user.email,
    userdetails.profile_img, following.follow_id 
FROM 
    user 
JOIN 
    userdetails ON user.id = userdetails.user_id 
JOIN 
    following on user.id = following.user_id 
WHERE 
    following.follow_id = 2
于 2013-04-20T20:16:48.190 に答える
1

これを試して

SELECT * FROM Following 
INNER JOIN Users on Following.UserId=Users.Id
INNER JOIN UsersDetails on Users.Id=UserDetails.UserId
where Following.Follow_id=@UserId

もちろん、必要に応じて列を選択できます。

于 2013-04-20T20:15:41.627 に答える
1
SELECT user.id, user.username,user.email,
userdetails.profile_img, following.follow_id FROM user JOIN userdetails 
ON user.id = userdetails.user_id JOIN following 
ON user.id = following.follow_id WHERE following.follow_id = 2

follow_id= 2に一致するユーザーのすべての ID を取得するには:

SELECT user_id from following where follow_id = 2;

user_id(次の表の列の名前を に変更しますfollower_id)

に関連付けられている userdetails テーブルからもデータを取得するにはuser_id:

SELECT userdetails.*, user.* FROM userdetails JOIN users 
ON user.id = userdetails.user_id JOIN following
ON user.id = following.***user_id*** WHERE following.follow_id = 2;

それが機能するかどうかを確認してください。あなたの問題は、あなたがフォローに参加したことだと思います. follow_id代わりにユーザーにfollowing.user_id

于 2013-04-20T20:16:35.707 に答える