Je kunt de eerste SQL gebruiken die je hebt geschreven, maar voor alle gebruikers:
SELECT u.*, b.balance, b.date
FROM users u JOIN balance b ON u.id = b.userId
WHERE b.date = (SELECT MAX(date) FROM balance WHERE userId = u.id);
Dit is misschien niet de snelste manier om het resultaat te krijgen, maar het geeft je wat je nodig hebt. Ik gebruik soortgelijke zoekopdrachten op nogal wat plaatsen in mijn app.