データベースから最新の証明書を取得しようとしています。私は最新のものを見たいだけで、他のもの全てを見たくないので、私はグループを使っています。そして、メインテーブルから一意のIDで注文します。mysqlクエリーでgroup byとorder byを正しく使用する
これでグループがなければ、完全に動作します。私は最後に証明書がアップロードされたことを確認してから、次にすべての証明書を確認します。
私がグループを追加するとすぐに、これまでにアップロードされた最初の証明書が何年も前から無意味であることがわかります。
私は他のテーブルの他の多くの情報を描画しているので、私のクエリはかなり大きいです。
ここは私の質問です。
SELECT
usercert.*,
cert.*,
certCat.certCatName,
certTask.certTaskName ,
certStatus.certStatusName
FROM
`usercert`
INNER JOIN
cert
ON
cert.idcert = usercert.idcert
INNER JOIN
certCat
ON
certCat.idcertCat = cert.idcertCat
INNER JOIN
certTask
ON
certTask.idcertTask = usercert.idcertTask
INNER JOIN
certStatus
ON
certStatus.idcertStatus = usercert.idcertStatus
WHERE
usercert.iduser=%s
GROUP BY
usercert.idcert
ORDER BY
usercert.usercertEnd DESC
日付の 'MAX'キーワードを' LIMIT'キーワードと組み合わせて試しましたか? –
最後の証明書だけが必要な場合は、でグループを作成する必要はありません。既に持っているクエリでLIMIT 1を実行するだけで、必要な行のみが返されます。 –