Zo heb ik het voor elkaar gekregen
SELECT * FROM orders
INNER JOIN order_status AS status
ON orders.orderid=status.orderid
WHERE status.created = (SELECT MAX(created) FROM order_status WHERE orderid = orders.orderid)
ORDER BY status.orderid DESC");
@Sander
Het werkt nu, maar is niet de oplossing. Het id zegt namelijk niets over wanneer iets is toegevoegd. Overigens gaat dit wel 99/100 keer goed, maar het is niet dé manier.
Een timestamp loopt altijd op naarmate de tijd vordert. Dus als een item later is toegevoegd zal de waarde van de timestamp ook altijd hoger zijn.
Je kunt hem dus gewoon sorteren op deze kolom.
Overigens zal je op deze manier maar 1 record terug krijgen, maar dat zou dus zo kunnen:
SELECT
*
FROM
orders
INNER JOIN
order_status AS status
ON
orders.orderid = status.orderid
ORDER BY
status.created DESC
LIMIT 1
Als ik je goed begrijp heb je de Subselect helemaal niet nodig, maar is bovenstaande query een betere oplossing.
@Sander
Ik snap nu ook pas wat je wilt met je query, jou oplossing is opzich een prima idee dan.
Ik had je verkeerd begrepen, waardoor bovenstaande oplossing niet meteen werkt. Je zal hem dan nog moeten groeperen op het order_id. Bovenstaande is dus niet een oplossing voor jou probleem!