1862


SQLite(+PHP)でSNSを作っています。現状、テーブル定義は以下のようになっています。

フォローの情報を入れている`follow`に、フォロー元のユーザーIDである`from_id`と、フォロー先のユーザーIDである`to_id`が存在しています。また、投稿テーブルとして、`post`があり、投稿ユーザーIDとして`user_id`があります。

このようなテーブルが定義されているときに、フォローしている人だけの投稿を取得し、表示するにはどうすればいいかがわかりません。どうすればいいのでしょうか?


CC BY-SA 3.0
2014-12-17T03:31:37.677
1854
2014-12-17T08:29:36.270
2014-12-17T08:29:36.270
982
question
php sql sqlite
SQLiteを使って構築した SNS でフォローしている人だけの投稿を表示したい


ということはこういう感じですかね。

SELECT <投稿そのもの> FROM folloe F INNER JOIN post P ON P.user_id=from_id WHERE
to_id=<フォロー先のID>

こうなれば、～をフォローしている人の発言を出せるはずです。
質問内にはpostテーブルの構造が少ないため、発言そのものの列がわからないのでこのように書いていますが。

あとは、このクエリをPHPでアウトプットすればよいと思いますが。


CC BY-SA 3.0
2014-12-17T03:37:34.437
1855
2014-12-17T03:37:34.437
4188
1854
answer


以下の SQL で取得可能です。

[code]

    SELECT * 
    FROM   post 
    WHERE  EXISTS (SELECT 1 
                   FROM   follow 
                   WHERE  follow.to_id = post.user_id 
                          AND follow.from_id = 自分のid) 
    
[/code]

コメントにお書きになられている方法だと「フォローしているうちの誰か１人の投稿」となる気がします。


CC BY-SA 3.0
2014-12-17T04:45:35.860
1862
2014-12-17T04:45:35.860
2432
1854
answer