Tengo un cliente de mesa que almacena un customer_id, correo electrónico y referencia. Hay una tabla adicional customer_data que almacena un registro histórico de los cambios realizados al cliente, es decir, cuando se realiza un cambio, se inserta una nueva fila.MySQL ÚNASE a la fila más reciente solamente?
Para mostrar la información del cliente en una tabla, las dos tablas deben unirse, sin embargo, solo la última fila de customer_data debe unirse a la tabla del cliente.
Se vuelve un poco más complicado porque la consulta está paginada, por lo que tiene un límite y un desplazamiento.
¿Cómo puedo hacer esto con MySQL? Creo que estoy con ganas de poner un DISTINCT en alguna parte ...
La consulta en el minuto es así-
SELECT *, CONCAT(title,' ',forename,' ',surname) AS name
FROM customer c
INNER JOIN customer_data d on c.customer_id=d.customer_id
WHERE name LIKE '%Smith%' LIMIT 10, 20
Adicionalmente, estoy en lo cierto al pensar que puedo utilizar CONCAT con LIKE en ¿de esta manera?
(I apreciar que INNER JOIN podría ser el tipo incorrecto de JOIN para su uso. En realidad no tengo idea de cuál es la diferencia entre los diferentes uniones. Voy a mirar en eso ahora!)
¿Cómo se ve la tabla de historial como cliente? ¿Cómo se determina la fila más reciente? ¿Hay un campo de marca de tiempo? –
La más reciente es simplemente la última fila insertada, por lo que su clave principal es el número más alto. – bcmcfc
¿Por qué no un gatillo? eche un vistazo a esta respuesta: http://stackoverflow.com/questions/26661314/best-and-optimal-way-to-join-max-value-from-other-table/26664982#26664982 –