私はphp/mysql best checkingシステムの前に作業しており、新しいチェックを作成する際には、私は上の画像のテーブル上でこのクエリを実行するとSQL 2番目のIDでグループ化された最大IDを取得
bbcheckProducts
ID checkID productID checked bestBefore
1 1 1 1 2015-05-06
2 2 1 1 2016-07-22
3 3 1 1 2016-09-16
bbChecks
checkID userID closed
1 1 1
2 2 1
3 1 1
ので:私はこれを成し遂げるためにいくつかのテーブルで働いています最近閉じチェック
SELECT ID,
MAX(checkID) AS maxCheck,
bestBefore
FROM bbcheckProducts
WHERE checkID IN
(
SELECT checkID
FROM bbChecks
WHERE userID = 1
AND closed = 1
)
AND checked = 1
GROUP BY productID
ORDER BY bestbefore ASC
それが何かを返しますl ike this:
ID = 1
maxCheck = 3
bestBefore = 2015-05-06
したがって、最大checkIDを使用しますが、他の値はproductIDの最初の発生と同じです。
ID=3
maxCheck = 3
bestBefore = 2016-09-16
ので、どのように私は私のクエリはそのように動作するように得るか:私は結果は次のようになりますので、それが最大のIDと一緒に行くの値を取るようにしたいですか?
注:製品1はチェック1と3にあり、製品2は1のみであるため、チェック1の製品2のデータとチェック3の製品1のデータを取らなければなりません。
一般的なGROUP BYルールの意味は次のとおりです。 GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません。 – jarlh
データセットは、問題を適切に再現できるほど十分に広範ではありません。 – Strawberry