Bonjour,
J'ai un problème d'extraction de données à partir d'une "jointure".
Organisation des tables
t_users
- id (INT, PRIMARY KEY, AUTO INCREMENT)
- nom (VARCHAR, NOT NULL)
- prenom (VARCHAR)
- ...
t_log
- id_log (PRIMARY KEY, AUTO INCREMENT)
- id_users (INT, NOT NULL)
- ts_created (TIMESTAMP, NOT NULL)
- ...
A chaque fois qu'un utilisateur se logue sur mon site, une ligne est
ajoutée à la table t_log (avec id_users = t_users.id et ts_created = date
courante).
Je voudrais, pour chacun des utilisateurs de t_users, afficher ses nom, prénom
et sa dernière date de connexion (ou mieux, sa dernière date de connexion si
il ne s'est pas connecté durant les 3 derniers mois).
L'objectif étant de détecter les utilisateurs "inactifs".
Si je lance cette requête :
j'obtiens bien tous les utilisateurs avec toutes leurs dates de connexions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT nom, prenom, ts_created FROM t_users INNER JOIN t_log ON id = id_users
(36 000 lignes environ).
Avec :
j'obtiens seulement l'utilisateur qui s'est connecté en dernier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT MAX(t_intermediaire.ts_created), t_intermediaire.nom, t_intermediaire.prenom FROM ( SELECT nom, prenom, ts_created FROM t_users INNER JOIN t_log ON id = id_users) AS t_intermediaire
Je ne vois pas comment structurer ma requête pour obtenir le MAX de chaque
utilisateur.
Si vous pouviez éclairer ma lanterne, je vous en serais très reconnaissant .
Si je ne suis pas clair, veuillez m'excuser et n'hésitez pas à me demander des précisions.
Partager