Topic: Kaip paSELECT'inti

Yra dvi lentelės:
tickets
* id
* created_at

ticket_changes
* id
* ticket_id
* created_at

Kaip selectinti tickets rūšiuojant pagal paskutinio ticket_change'o datą?
Optimaliausia turbūt būtų išsaugoti šią datą tickets lentelėje.

Re: Kaip paSELECT'inti

La,

Idėja būtų tokia:

SELECT tickets.id,
   tickets.created_at
   changes.created_at
FROM tickets LEFT JOIN (
   SELECT ticket_changes.ticket_id,
      MAX(ticket_changes.created_at)
   FROM ticket_changes.ticket_changes
   GROUP BY ticket_changes.ticket_id
   ) changes ON tickets.id = changes.ticket_id
ORDER BY changes.created_at DESC

Dėl tikslesnio querio galėtum parodyt:

SHOW CREATE TABLE tickets;
SHOW CREATE TABLE ticket_changes;

Re: Kaip paSELECT'inti

Ačiū, suveikė.

SELECT tickets.id,
   tickets.created_at,
   changes.created_at
FROM tickets LEFT JOIN (
   SELECT ticket_changes.ticket_id,
      MAX(ticket_changes.created_at) AS created_at
   FROM ticket_changes
   GROUP BY ticket_changes.ticket_id
   ) changes ON tickets.id = changes.ticket_id
ORDER BY changes.created_at DESC