Selectionner une colonne distincte + une autre colonne

Résolu/Fermé
Herve_be Messages postés 1077 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 6 décembre 2024 - 28 mai 2019 à 14:41
Herve_be Messages postés 1077 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 6 décembre 2024 - 28 mai 2019 à 18:30
Bonjour,
Bonjour,
Je ne parviens pas à obtenir ce que je veux.
Chaque fois qu'un utilisateur se connecte à mon site j'ajoute un enregistrement dans une DB qui contient donc Userid + Date.
Par exemple
28/5 User 1
27/5 User 2
27/5 User 1
27/5 User 3
26/5 User 2
...
Je voudrais avoir la liste des utilisateurs avec la dernière date à laquelle ils se sont connectés; dans l'exemple le résultat serait
28/5 User 1
27/5 User 2
27/5 User 3

J'ai essayé avec distinct, Group, Sort, ... je n'y parviens pas
Une idée ?


Configuration: Windows / Firefox 67.0
A voir également:

6 réponses

VortexUrukog Messages postés 41 Date d'inscription samedi 2 décembre 2017 Statut Membre Dernière intervention 28 mai 2019 4
28 mai 2019 à 14:56
bonjour il faut faire un Group, Sort avec l'id = id de connexion + une recherche via la date la plus récente cela dépend du type d'encodage pour la date sur ton site
0
Herve_be Messages postés 1077 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 6 décembre 2024 9
28 mai 2019 à 14:59
Merci pour ta réponse rapide, c'est effectivement ce que je voudrais faire mais je ne sais pas comment.
La date est en fait un timestamp en zone texte, par exemple 190528085857
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
28 mai 2019 à 16:08
Bonjour,

Est-ce que ce résultat te convient ?
SELECT MAX(Date), UserId FROM ta_table GROUP BY UserId


Xavier
0
Herve_be Messages postés 1077 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 6 décembre 2024 9
28 mai 2019 à 16:39
Presque.
Voici ce que j'ai fait pour tester
$results = mysqli_query($db,'select MAX(Timestamp), Userid from RVRTlog group by Userid order by Timestamp DESC ');

while($result = mysqli_fetch_array($results))
	{
	echo "<br>".$result['Timestamp'].";".$result['Userid'];
	}  
J'ai bien le Userid mais pas le Timestamp.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
28 mai 2019 à 17:05
C'est normal, quand tu écris $result['Timestamp'] tu supposes que la première colonne s'appelle ainsi, or ce n'est pas le cas car elle est le résultat d'un calcul.
Il faut forcer le nom dans la requête, comme ceci :
$results = mysqli_query($db,'select MAX(Timestamp) as Timestamp, Userid from RVRTlog group by Userid order by Timestamp DESC ');

Xavier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Herve_be Messages postés 1077 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 6 décembre 2024 9
28 mai 2019 à 17:44
Merci, entretemps j'avais trouvé la même chose que toi
$results = mysqli_query($db,'select MAX(Timestamp) as LastDate, Userid from RVRTlog group by Userid order by Timestamp DESC ');
...
echo "<br>".$result['LastDate'].";".$Userid;
Ca fonctionne très bien, un tout grand merci.
0
Herve_be Messages postés 1077 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 6 décembre 2024 9
28 mai 2019 à 18:30
Un petit détail : j'avais fait order by Timestamp qui n'est pas dans la sélection donc ce n'est pas trié.
J'ai fait order by LastDate et là tout est OK.
encore merci.
0