1

次のクエリを作成します。

        SELECT
        posts.id,
        posts.useraid,
        posts.useradn,
        posts.title,
        posts.createdate,
        posts.forumid,
        posts.type,
        posts.totalreplys,
        users.photo AS creatorphoto
    FROM posts
    JOIN users ON(users.id = posts.useraid)
    WHERE posts.forumid IN(
        SELECT subscribe.forumid AS fsub
        FROM subscribe  
        WHERE subscribe.useraid = '$myid'
    ) AND
    posts.forumid IN(
        SELECT forums.id
        FROM forums
        WHERE forums.relatedto=fsub
    )
    AND posts.type='post' 
    ORDER BY posts.timee DESC LIMIT 20

コードはこの部分がなくても完全に機能します

AND
    posts.forumid IN(
        SELECT forums.id
        FROM forums
        WHERE forums.relatedto=fsub
    )

しかし、サブフォーラムの投稿を含め、彼が購読しているすべてのフォーラムからすべての投稿を選択するクエリが必要です。

4

4 に答える 4

0

サブクエリを使用する代わりに、サブスクライブ テーブルとフォーラム テーブルをメインの FROM 基準に追加してみませんか?

例えば、

FROM posts
JOIN users ON(users.id = posts.useraid)
JOIN subscribe ON (posts.forumid = subscribe.forumid)
JOIN forums ON (forums.relatedto = posts.forumid)
于 2013-03-11T23:30:47.207 に答える
0

これを試して:

  SELECT
        posts.id,
        posts.useraid,
        posts.useradn,
        posts.title,
        posts.createdate,
        posts.forumid,
        posts.`type`,
        posts.totalreplys,
        users.photo AS creatorphoto
    FROM posts
    JOIN users 
    ON users.id = posts.useraid AND posts.`type`='post'
    JOIN subscribe
    ON subscribe.forumid = posts.forumid AND subscribe.useraid = '$myid'
    JOIN forums
    ON posts.forumid = forums.relatedto 
    ORDER BY posts.timee DESC LIMIT 20
于 2013-03-11T23:35:00.580 に答える
0

これがあなたの答えです。サブクエリで検索する前に、まずサブスクライブとフォームに参加する必要があります。

SELECT
    posts.id,
    posts.useraid,
    posts.useradn,
    posts.title,
    posts.createdate,
    posts.forumid,
    posts.type,
    posts.totalreplys,
    users.photo AS creatorphoto
FROM posts
JOIN users ON(users.id = posts.useraid)
WHERE posts.forumid IN(
    SELECT subscribe.forumid AS fsub
    FROM subscribe ,forums
    WHERE subscribe.useraid = '$myid'
    and forums.relatedto = subscribe.forumid
    and forums.id = subscribe.forumid     
) 
AND posts.type='post' 
ORDER BY posts.timee DESC LIMIT 20
于 2013-03-12T05:59:03.987 に答える