2 つのテーブルがあります: gems と gemdetail が結合されたままです。gems テーブルで LEFT JOIN を 10 レコードに制限しようとしています。他にも 2 つのテーブル (gemreply と users) が結合されていますが、これらは問題の原因ではありません。以下は機能しません。
SELECT gems.gemid, gems.title, r.tot, gemdetail.filename FROM ((gems
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) AS r ON gems.gemid = r.gemid)
LEFT JOIN gemdetail ON gems.gemid = gemdetail.gemid)
LEFT JOIN users ON gems.userid = users.userid
WHERE gems.grade = '7' ORDER BY gems.gemid LIMIT 0, 10;
これにより、返される行の合計数が 10 に制限されますが、gem ごとに複数の詳細レコードがあるため、gem レコードは 10 未満になります。すべての「LIMIT」投稿を読みましたが、このような状況は見つかりませんでした。
更新 1: OK - jviladrich のおかげで、うまくいきました。コードは次のとおりです。
SELECT gems.gemid, gems.title, r.tot, gemdetail.filename
FROM ((gems
INNER JOIN (SELECT gems.gemid from gems WHERE gems.grade = '7' ORDER BY gems.gemid LIMIT 0, 10) g
ON (gems.gemid = g.gemid)
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) AS r ON gems.gemid = r.gemid)
LEFT JOIN gemdetail ON gems.gemid = gemdetail.gemid)
LEFT JOIN users ON gems.userid = users.userid ;
更新 2: 以下の yogeshr のコードも機能します。おそらく、私が使用するコードです。お二人ともありがとう!