2017-04-08 19 views
0

あなたはmysqlのクエリをたどるユーザーの投稿のみを取得: MySql get all rows where id = xxx and where the newest column in other table in row with same id is greater than oneこの質問は私の前の質問に依存

私は現在、公開されているすべてのユーザのすべての投稿を取得するには、次のクエリを使用しています:

select p.* 
    from (select p.*, 
       (select pp.public_type 
        from tbl_post_public pp 
        where pp.post_id = p.post_id 
        order by date desc 
        limit 1 
       ) as latest_public 
      from tbl_post p 
      order by p.date desc 
     ) p 
    where latest_public < 80 
    limit 10; 

ではなく、私は以下の通りであるInstagramの に私は、テーブルには誰を保存するには、次のようにしている以下のイムユーザーの投稿のみを取得したい人:

tbl_user_follow:

id | user  | follower_user | 
-------------------------------- 
0 | xxxxx4 | xxxxx1 (<-me) | 
1 | xxxxx8 | xxxxx1 (<-me) | 
2 | xxxxx3 | xxxxx6  | 

このように、私は以前の質問を考慮しているので、「xxxxx1」というユーザーに「xxxxx4」と「xxxxx8」のすべての投稿を表示するようにします。

は非常に多く、私の悪い英語のため申し訳ありませんありがとうございました:)

+0

どのDBを使用していますか? mysqlとsql-serverの両方にタグを付けました。 –

+1

あなたの前の質問がMySQLに関するものだったなら、私はこれもまた仮定します。あなたの質問に余分なタグを付けないでください。 –

+0

申し訳ありません...私はmysqlを使用しています – Musk

答えて

0

あなたはあなたの質問では、テーブルの名前、または他のテーブルのフィールド名を指定するので、それらを一致させるために、以下を調整していません名前。また、$ user_idを一致するidに置き換えてください。

select p1.* 
    from (select p.*, 
       (select pp.public_type 
       from tbl_post_public pp 
       where pp.post_id = p.post_id 
       order by date desc 
       limit 1 
       ) as latest_public 
     from tbl_post p 
     order by p.date desc 
     ) p1 
    JOIN `tbl_user_follow` f 
    ON f.`user` = p1.`user` 
    where latest_public < 80 
    AND (f.`follower_user` = $userID OR f.`user` = $userID) 
    GROUP BY f.`follower_user`, f.`user` 
    limit 10; 
+0

ありがとうございます!できます!私も自分の投稿を取得する方法を教えてくださいできますか? "AND f.'follower_user' = $ userID OR p1.'user '= $ userID" – Musk

+0

ここで 'user' = $ user_ID; _ tbl_postからちょうど_select * _また、それがあなたのために働いた場合、答えを受け入れてください。 –

+0

heheはい私は答えを受け入れるでしょう。 'select * from tbl_post where user = $ user_ID'という完全なクエリを書いてください。私はmysqlのnoobです:) – Musk

関連する問題