Ich arbeite an einem php/mysql Mindesthaltbarkeitsdatum und bei der Erstellung eines neuen Schecks brauche ich das System, um ein Mindesthaltbarkeitsdatum für ein bestimmtes Produkt zu finden kürzlich geschlossenen CheckSQL Get max ID gruppiert nach einer zweiten ID
ich mit ein paar Tischen arbeite dieses erhalten getan:
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
Also, wenn ich diese Abfrage auf die Tabellen im Bild oben ausgeführt:
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
es gibt etwas l ike dies:
ID = 1
maxCheck = 3
bestBefore = 2015-05-06
so dass es die maximale checkID nehmen, aber die anderen Werte bleiben gleich das erste Auftreten von ProduktID. Ich will es die Werte zu übernehmen, die mit diesem max ID gehen zusammen so das Ergebnis würde wie folgt aussehen:
ID=3
maxCheck = 3
bestBefore = 2016-09-16
so wie bekomme ich meine Frage, wie das funktioniert?
HINWEIS: Es gibt mehrere Produkte, so dass Produkt eins im Scheck 1 und 3 sein kann, während Produkt 2 nur in 1 ist, also die Daten von Produkt 2 von Scheck 1 und die Daten von Produkt 1 von Scheck 3
nehmen müssen
Die allgemeine GROUP BY-Regel lautet: Wenn eine GROUP BY-Klausel angegeben ist, muss jede Spaltenreferenz in der SELECT-Liste entweder eine Gruppierungsspalte angeben oder das Argument einer set-Funktion sein. – jarlh
Der Datensatz ist nicht umfangreich genug, um das Problem korrekt darzustellen. – Strawberry