The goal is to send notifications about the customer updates but only for the first one if there are consecutive updates from the customer in a ticketing system.
This is the simplified query that I’m using to get the data that I need. There are a few more columns in the original query and this subquery for threads
is kind of required so I can also identify if this is a new ticket or if existing one was updated (in case of update, the role for the latest threads will be a customer
):
SELECT t.ref, m.role FROM tickets t LEFT JOIN threads th ON (t.id = th.ticket_id) LEFT JOIN members m ON (th.member_id = m.id) WHERE th.id IN ( SELECT MAX(id) FROM threads WHERE ticket_id = t.id )
It will return a list of tickets so the app can send notifications based on that:
+------------+----------+ | ref | role | +------------+----------+ | 210117-001 | customer | | 210117-002 | staff | +------------+----------+
Now, I want to send only a single notification if there a multiply consecutive updates from the customer.
Question:
How I can pull last and also one before last row to identify if this is consecutive reply from the customer?
I was thinking about GROUP_CONCAT
and then parse the output in the app but tickets can have many threads so that’s not optimal and there are also a few more fields in the query so it will violate the ONLY_FULL_GROUP_BY
SQL mode.
db<>fiddle here