SQL句でLIMITを適用する前に、(ページングセレクターの)レコードの総数をカウントする最良の方法を見つけようとして、少し混乱しました。
これを達成するために2つのクエリを使用しており、必要な特定のビューのWHERE句を変えています。
$sqlcount = "SELECT COUNT(invnum) AS num
FROM tblinvoices
WHERE invcustid>0 AND invstat>0 AND invdate
BETWEEN '$startdate' AND '$enddate'
$sqlquery = "SELECT $fieldlist
FROM tblinvoices
INNER JOIN tblcontacts
ON tblinvoices.invcustid = tblcontacts.ID
WHERE invcustid>0 AND invstat>0 AND invdate
BETWEEN '$startdate' AND '$enddate'
ORDER BY invdate
LIMIT 0,$pagerows";
私の問題は、DATE および COUNT クエリと PAGING を組み合わせた例で見られるすべての例が方法が大きく異なることです。これらの要件を柔軟かつ効率的な方法で組み合わせる最良の方法を知りたいと思っています。
最初は柔軟性のために BETWEEN メソッドを選択しましたが、多くの例 (日付範囲の場合) では次のような句が使用されています。
SELECT MIN(date) AS date1, MAX(date) AS date2 FROM mytable
WHERE (MONTH(date) = (SELECT Month(MAX(date))-1 FROM mytable )
OR MONTH(date) = (SELECT Month(MAX(date))-2 FROM mytable ))
AND YEAR(date) = (SELECT YEAR(MAX(date))
FROM mytable)
ページングの目的でそのようなステートメントを COUNT および LIMIT と組み合わせることができず、1 つの操作で両方を実行できるかどうかもわかりません (LIMIT が COUNT に影響するため、不可能であると「推定」しています)。
この一般的な要件を満たすための最善の方法 (私が考えたもの) のアドバイスや例は、非常にありがたく受け取られます。よろしくお願いします。