Selectionner une colonne distincte + une autre colonne [Résolu]

Messages postés
539
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
18 août 2019
- - Dernière réponse : Herve_be
Messages postés
539
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
18 août 2019
- 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
Afficher la suite 

6 réponses

Messages postés
41
Date d'inscription
samedi 2 décembre 2017
Statut
Membre
Dernière intervention
28 mai 2019
2
0
Merci
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
Commenter la réponse de VortexUrukog
Messages postés
539
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
18 août 2019
0
Merci
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
Commenter la réponse de Herve_be
Messages postés
3455
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
14 août 2019
913
0
Merci
Bonjour,

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


Xavier
Commenter la réponse de Reivax962
Messages postés
539
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
18 août 2019
0
Merci
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.
Reivax962
Messages postés
3455
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
14 août 2019
913 -
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
Commenter la réponse de Herve_be
Messages postés
539
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
18 août 2019
0
Merci
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.
Commenter la réponse de Herve_be
Messages postés
539
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
18 août 2019
0
Merci
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.
Commenter la réponse de Herve_be