1

私は3つのテーブルユーザーを持っており、ストリーミングしてフォローしています

表に従ってください:

follow_id   user_id_follower   user_id_followed
    1              9                  2 
    2              9                  4 

ユーザーテーブル

id   username   
1     test1         
2     test2

ストリームテーブル

id user_id  post_content    post_image   
1     9     Hi there        uploads/1.jpg
2     9     Another         uploads/2.jpg

これにより、ユーザーに投稿が提供されます

SELECT users.username, stream.post_content, stream.post_image 
FROM users INNER JOIN stream ON users.id=stream.user_id 
WHERE stream.user_id = 9

これにより、ユーザーが投稿をフォローするユーザーに

SELECT users.username, stream.post_content, stream.post_image, 
follow.user_id_follower, follow.user_id_followed FROM follow
INNER JOIN stream ON follow.user_id_followed = stream.user_id
INNER JOIN users ON follow.user_id_followed = users.id
WHERE follow.user_id_follower = 9 // this change depending on user

ユーザーとフォローされている投稿の両方を取得する単一のSQLステートメントを作成するのに問題があります

4

2 に答える 2

2

これに使用する必要がありますUNION ALL

SELECT s.*, follower.username, 1 order_priority
  FROM stream s
  JOIN user follower ON s.user_id = follower.userid
 WHERE follower.user_id = 9
UNION ALL
SELECT s.*, following.username, 2
  FROM stream s
  JOIN user following ON s.user_id = following.userid
  JOIN follow f ON following.user_id = f.user_id_followed
       AND f.user_id_follower = 9
ORDER BY order_priority;
于 2013-03-20T06:38:25.077 に答える
0

これはあなたが探しているクエリですか?

SELECT users.username, stream.post_content, stream.post_image, 
follow.user_id_follower, follow.user_id_followed FROM follow
INNER JOIN stream ON follow.user_id_followed = stream.id
INNER JOIN users ON follow.user_id_followed = users.id
WHERE follow.user_id_follower = 9;
于 2013-03-20T06:43:55.860 に答える