1

これがクエリです。3つのテーブルを内部結合しました。これで、結果のすべての行をカウントしようとしています。つまり、管理者のphpでクエリを実行して78をカウントします。テーブルの結果は必要ありません。wchichで1行だけが必要です。書かれているのは78で、私たちと同じです

SELECT count (*) FROM test_table

以下は、3つの内部結合テーブルのクエリです。

        SELECT 
mybb_users.uid,
mybb_users.username,
mybb_users.avatar,
mybb_posts.fid,
mybb_posts.uid,
mybb_posts.dateline,
mybb_posts.tid,
mybb_posts.subject,
mybb_forums.parentlist,
mybb_forums.fid
FROM mybb_forums
    INNER JOIN mybb_posts ON mybb_forums.fid = mybb_posts.fid
    INNER JOIN mybb_users ON mybb_posts.uid = mybb_users.uid
    WHERE mybb_forums.parentlist LIKE '%58%'
    GROUP BY mybb_posts.tid
    ORDER BY mybb_posts.dateline DESC

今、その中の行の総数を数える方法は?

編集済み

 SELECT count( mybb_users.uid ) AS totalOfRows
FROM (

SELECT mybb_users.uid, mybb_users.username, mybb_users.avatar, mybb_posts.fid, mybb_posts.uid AS uidPost, mybb_posts.dateline, mybb_posts.tid, mybb_posts.subject, mybb_forums.parentlist, mybb_forums.fid AS fidForum
FROM mybb_forums
INNER JOIN mybb_posts ON mybb_forums.fid = mybb_posts.fid
INNER JOIN mybb_users ON mybb_posts.uid = mybb_users.uid
WHERE mybb_forums.parentlist LIKE '%58%'
GROUP BY mybb_posts.tid
)T

エラー::#1054-'フィールドリスト'の不明な列'mybb_users.uid'

4

1 に答える 1

2

結果が必要ない場合は、なぜこれらのフィールドを表示するのですか?selectは1つのテーブルを返すので、それにカウントを適用します。

SELECT 
count(*)
FROM mybb_forums
    INNER JOIN mybb_posts ON mybb_forums.fid = mybb_posts.fid
    INNER JOIN mybb_users ON mybb_posts.uid = mybb_users.uid
    WHERE mybb_forums.parentlist LIKE '%58%'
    GROUP BY mybb_posts.tid

また、投稿ごとにグループ化しているので、注文する必要はありません

編集:私が投稿したクエリは機能するはずですが、そうでない場合は、これは間違いなく機能するはずです:

SELECT sum(Total) AS totalOfRows 
FROM ( 

SELECT 1 as Total 
FROM mybb_forums 
INNER JOIN mybb_posts ON mybb_forums.fid = mybb_posts.fid 
INNER JOIN mybb_users ON mybb_posts.uid = mybb_users.uid 
WHERE mybb_forums.parentlist LIKE '%58%' 
GROUP BY mybb_posts.tid 
)T
于 2012-08-25T15:10:06.800 に答える