Just nu i M3-nätverket
Gå till innehåll

Group by max-datum MySQL


Dafvid F

Rekommendera Poster

Hej!

 

Jag håller på att knåpa ihop en SQL-fråga som ska ge mig en tabell med den senaste orderuppdateringen på varje ordrar där ordern är obetald men innan ett givet datum. Följande fråga fungerar (nästan):

SELECT orders_status_history.orders_id, orders_status_history.date_added, orders_status.orders_status_name
FROM orders_status_history
INNER JOIN orders_status ON orders_status_history.orders_status_id = orders_status.orders_status_id
WHERE date_added < '2014-05-08 00:00:00' AND orders_status.orders_status_name LIKE '%ej bet%'
GROUP BY orders_id HAVING MAX(orders_status_history.date_added)

Som jag förstått det funkar inte Group by att använda såsom jag gör här, det ska vara HAVING MAX(xxx) = maxdatum. Där maxdatum ska plockas fram på något sätt någonstans, hur ska jag göra?

 

Det är alltså på så vis att order_status-tabellen ofta är uppdaterad vid ett antal tillfällen och varje sådant tillfälle har ett datum. Vidare kan även tabellen ha uppdaterats efter det givna datumet men den raden ska inte vara med i resultatet, enbart den senaste raden men innan datumet är av intresse.

 

Tack på förhand!!

Länk till kommentar
Dela på andra webbplatser

Nu har jag löst problemet! För den nyfikne kommer lösningen nedan (det är för övrigt en oscommerce-shop detta ska användas i)

SELECT orders_id, date_added, orders_status_name FROM (SELECT t.orders_id, t.date_added, t.orders_status_history_id, t.orders_status_id
FROM ( SELECT orders_id, MAX(date_added) AS max_date FROM orders_status_history WHERE date_added < '2014-05-09 00:00:00'
GROUP BY orders_id) AS m
INNER JOIN orders_status_history AS t ON t.orders_id = m.orders_id AND t.date_added = m.max_date) AS q INNER JOIN orders_status AS p ON q.orders_status_id = p.orders_status_id
WHERE p.language_id=2 AND p.orders_status_name LIKE '%ej bet%'
GROUP BY orders_id
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...