0

ある種の「ニュース フィード」を作成しようとしていますが、これを行うためのクエリを作成するのに苦労しています。

簡単に言えば、ユーザー A が自分のホームページにアクセスしてユーザー B、C、D をフォローすると、ユーザー B、C、D のコンテンツが表示されるようにしようとしています。

2 つのテーブルがあると仮定します。posts, connections

テーブルpostsには関連する列がたくさんあり、テーブルconnectionsには列がありますid,user,followed

(ひどい)疑似コードでは、次のようなことをしようとしています:

SELECT * FROM posts WHERE author=(SELECT followed FROM connections WHERE user='A')

そして、B、C、D (別名、A がフォローしている) によるものを投稿します。

ひょっとして、これを実際の MySQL クエリとして記述する方法を知っている人はいますか? 私がすでに読んだものはかなり混乱しているようで、どうやってこれをやろうとしているのか本当に理解できません!

どうもありがとうございました!どんな助けでも大歓迎です!:)

4

2 に答える 2

1

使用できますIN

SELECT * 
FROM   posts 
WHERE  author IN (SELECT followed FROM connections WHERE user = 'A')

またはJOIN私が好む

SELECT  DISTINCT a.*
FROM    posts a
        INNER JOIN connections b
            ON a.author = b.followed
WHERE   b.user = 'A'
于 2013-03-31T11:38:58.630 に答える
1

結合を使用します。

SELECT p.*
FROM connections c
JOIN posts p
  ON c.followed = p.author
WHERE user='A'

connectionsテーブルが最初にリストされることに注意してください。したがってuser、where 句によって駆動されるインデックス on を使用できます。

于 2013-03-31T11:43:16.173 に答える