Ho un cliente della tabella che memorizza un customer_id, un email e un riferimento. C'è una tabella aggiuntiva customer_data che memorizza un record storico delle modifiche apportate al cliente, cioè quando viene apportata una modifica viene inserita una nuova riga.MySQL UNISCITI solo alla riga più recente?
Per visualizzare le informazioni sul cliente in una tabella, è necessario unire le due tabelle, tuttavia è necessario unire solo la riga più recente di customer_data alla tabella del cliente.
Diventa un po 'più complicato in quanto la query è impaginata, quindi ha un limite e un offset.
Come posso fare questo con MySQL? Penso di voler mettere un DISTINCT da qualche parte ...
La query al minuto è come questo-
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
Additionaly, ho ragione nel pensare che posso usare CONCAT con LIKE in per di qua?
(Mi rendo conto che INNER JOIN potrebbe essere il tipo sbagliato di JOIN da usare. Io in realtà ho idea di quale sia la differenza tra le diverse join. Ho intenzione di guardare in quella ora!)
che modo la tabella di storia del cliente assomiglia? Come viene determinata la riga più recente? C'è un campo temporale? –
Più recente è semplicemente l'ultima riga inserita, quindi la sua chiave primaria è il numero più alto. – bcmcfc
Perché non un trigger? dai un'occhiata a questa risposta: http://stackoverflow.com/questions/26661314/best-and-optimal-way-to-join-max-value-from-other-table/26664982#26664982 –