Ho due tabelle (membri e attività) e sto cercando di interrogare i membri con l'ultima attività per ogni membro. Ho lavorato con due query (una per ottenere i membri e una seconda con un massimo (id) e un gruppo per (membro) sulle attività) e un codice per unire i dati. Sono sicuro che può essere fatto con una singola query, ma non riesco a capirlo. Qualche idea?MySQL LEFT JOIN utilizza MAX & GROUP BY nella tabella unita?
membri tabella tavolo
id, name
1, Shawn
2, bob
3, tom
attività
id, member_id, code, timestamp, description
1, 1, 123, 15000, baked a cake
2, 1, 456, 20000, ate dinner
3, 2, 789, 21000, drove home
4, 1, 012, 22000, ate dessert
risultato desiderato:
id, name, activity_code, activity_timestamp, activity_description
1, shawn, 012, 22000, ate dessert
2, bob, 789, 21000, drove home
3, tom, null, null, null
Sembra che il mio membro (tom, id = 3) non abbia mai registrato alcuna attività. Ho provato a cambiare INNER JOIN in LEFT JOIN. Sto provando la seconda istruzione WHERE, i miei timestamp non sono garantiti come univoci, ma l'ID è un campo di autoincremento unico. –
@ShawnMcBride Vedi risposta modificata. – Tomalak
Personalmente non mi piacciono le query annidate in condizioni. Sarebbe una soluzione molto più ottimizzata se ti unisci alla query che ha solo timestamp MAX, come la risposta sotto – dzona