0

私はあなたがフォローしているユーザーからの投稿で私のウェブサイトのニュースフィードを作成しています.SQLステートメントに追加の条件を追加し、このフィードに自分の投稿を表示する正しい構文は何だろうと思っていました.エラーが発生しました。現在のクエリは次のとおりです。

     SELECT posts.*
       FROM posts 
 INNER JOIN follow 
         ON posts.uid = follow.following_id 
      WHERE follow.follower_id = '$myUser' 
   ORDER BY posts.id DESC 
      LIMIT 10

では、$myUser 変数の uid を持つ投稿も表示する条件を追加するにはどうすればよいでしょうか?

編集:

テーブル構造:

投稿:

id | uid | message | date_posted

従う:

id | follower_id | following_id
4

3 に答える 3

1
SELECT      posts.* 

FROM        posts 
INNER JOIN  follow ON posts.uid = follow.following_id 

WHERE       follow.follower_id = '$myUser' 
            OR 
            posts.uid = '$myUser' 

ORDER BY    posts.id DESC LIMIT 10
于 2014-07-22T13:12:12.993 に答える
1

データベース構造の概要がわからないとなんとも言えませんが、結合を LEFT 結合に変更し、投稿テーブルで想定している自分の ID を確認する条件を追加することから始めるのがよいでしょう。かもね:

SELECT posts.* FROM posts LEFT JOIN follow ON posts.uid = follow.following_id WHERE (follow.follower_id = '$myUser' OR posts.user_id = '$myUser') ORDER BY posts.id DESC LIMIT 10

そこからがスタートかもしれません。

于 2014-07-22T13:12:20.860 に答える
1

これにはOR句を使用したいと思うので、フォロワーまたはユーザーからの投稿を受け取ります。AND を使用すると、フォロワー ID とユーザー ID を持つ投稿が返され、何も返されない場合があります。

したがって、この:

SELECT posts.* FROM posts INNER JOIN follow ON posts.uid = follow.following_id WHERE follow.follower_id = '$myUser' ORDER BY posts.id DESC LIMIT 10

次のようになります。

SELECT posts.* FROM posts INNER JOIN follow ON posts.uid = follow.following_id WHERE follow.follower_id = '$myUser' OR posts.uid = '$myUser' ORDER BY posts.id DESC LIMIT 10

残念ながら、現在これをテストすることはできませんが、うまくいかない場合は、少なくとも正しい方向に向けるのに役立つことを願っています.

于 2014-07-22T13:17:09.160 に答える