Consulta MySql solo si el valor seleccionado tiene la fecha más reciente
Frecuentes
Visto 29 equipos
-1
Necesito una consulta especial para MySql. Esta es mi consulta real:
SELECT t.accountingClerk, t.creationDate. u.windowsAccountName, t.customer, c.lastName, c.firstName, c.assignee
FROM ticket as t
LEFT JOIN customer AS c on t.customer = c.customerId
LEFT JOIN user AS u ON c.assignee = u.emailAdress
WHERE c.assignee IS NOT NULL AND t.accountingClerk = 'user1@mail.com'
GROUP BY t.customer;
La consulta funciona bien hasta ahora, pero el resultado no es exactamente lo que necesito. Hay dos posibles tickets coincidentes, uno más nuevo con "usuario2@mail.com" y uno más antiguo con usuario1@mail.com como empleado de contabilidad. Necesito que mi consulta me muestre el resultado solo si el "usuario1@mail.com" es el empleado contable del ticket con la fecha de creación más reciente.
Espero que entiendan a lo que me refiero.
2 Respuestas
0
Puedes probar algo como esto: -
SELECT t.accountingClerk, t.creationDate. u.windowsAccountName, t.customer, c.lastName,
c.firstName, c.assignee
FROM ticket as t
LEFT JOIN customer AS c on t.customer = c.customerId
LEFT JOIN user AS u ON c.assignee = u.emailAdress
WHERE c.assignee IS NOT NULL
AND t.accountingClerk = (SELECT accountingClerk
FROM tickets
WHERE creationDate = (SELECT MAX(creationDate)
FROM tickets)
) AS Table1
GROUP BY t.customer;
Es posible que la consulta no esté optimizada, pero espero que funcione para usted.
Respondido el 12 de junio de 14 a las 11:06
0
Esta es la solución para mi problema:
CREATE TEMPORARY TABLE IF NOT EXISTS tempDateSort AS (SELECT accountingClerk, creationDate, customer FROM ticket ORDER BY creationDate DESC);
CREATE TEMPORARY TABLE IF NOT EXISTS tempCustomerGroup AS (SELECT * FROM tempDateSort GROUP BY customer);
SELECT t.accountingClerk, u.windowsAccountName, t.customer, c.lastName, c.firstName, c.assignee FROM tempCustomerGroup AS t
LEFT JOIN customer AS c on t.customer = c.customerId
LEFT JOIN user AS u ON c.assignee = u.emailAdress
WHERE c.assignee IS NOT NULL AND t.accountingClerk = 'user1@mail.com';
Respondido el 13 de junio de 14 a las 18:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql date or haz tu propia pregunta.