[REQUETE SQL] Probleme lors de tri dans une requête
Résolu/Fermé
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
-
Modifié par patrice86 le 3/04/2014 à 17:06
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 9 avril 2014 à 11:16
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 26 novembre 2023 - 9 avril 2014 à 11:16
A voir également:
- [REQUETE SQL] Probleme lors de tri dans une requête
- Sql (+) - Forum Programmation
- Tri excel - Guide
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Erreur lors de l'envoi de la requête. facebook - Forum Facebook
2 réponses
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié par Reivax962 le 4/04/2014 à 11:10
Modifié par Reivax962 le 4/04/2014 à 11:10
Bonjour,
Quelle que chose comme ceci te donnera, pour chaque personne, sa dernière humeur enregistrée.
Et si tu veux un id_users spécifique, tu rajoutes, bien sûr,
Xavier
PS : « Or », pas « Hors » ! ;-)
Quelle que chose comme ceci te donnera, pour chaque personne, sa dernière humeur enregistrée.
select etre.id_humeur, etre.id_users, humeur.* from etre inner join ( select max(datetime) as max_date, id_users from etre group by id_users ) dt on dt.id_users = etre.id_users AND dt.max_date = etre.datetime inner join humeur on humeur.id_humeur = etre.id_humeur
Et si tu veux un id_users spécifique, tu rajoutes, bien sûr,
WHERE id_users=à la fin :
select etre.id_humeur, etre.id_users, humeur.* from etre inner join ( select max(datetime) as max_date, id_users from etre group by id_users ) dt on dt.id_users = etre.id_users AND dt.max_date = etre.datetime inner join humeur on humeur.id_humeur = etre.id_humeur where etre.id_users = 1
Xavier
PS : « Or », pas « Hors » ! ;-)
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
125
5 avril 2014 à 14:31
5 avril 2014 à 14:31
Hmm cela semble parfaitement bien fonctionner !
Pour dormir moins c** ce soir, peux-tu expliquer rapidement ta requête stp ?
Je ne comprend pas bien l'histoire du Inner Join là doublement utilisé.
Merci Xavier ! ;)
Pour dormir moins c** ce soir, peux-tu expliquer rapidement ta requête stp ?
Je ne comprend pas bien l'histoire du Inner Join là doublement utilisé.
Merci Xavier ! ;)
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
7 avril 2014 à 13:24
7 avril 2014 à 13:24
En fait, je fais une première jointure vers une sous-table qui contient, pour chaque personne, la date de son dernier changement d'humeur.
Cela permet de ne sélectionner que ces lignes-là.
La deuxième jointure est celle que tu avais toi-même dans ta requête, vers la table Humeur, pour récupérer le nom de l'humeur (j'imagine).
Faire
FROM t INNER JOIN j on t.jid = j.id
revient à faire ce que tu as fait toi :
FROM t, j WHERE t.jid = j.id
Je préfère personnellement l'écriture INNER JOIN, car elle permet de mieux cerner les erreurs éventuelles (produits cartésiens indésirables) et me semble plus lisible en séparant de la clause WHERE les contraintes réelles sur les données, de celles qui relèvent de la structure des données. Et elle permet quelques nuances comme les LEFT OUTER JOIN.
Xavier
Cela permet de ne sélectionner que ces lignes-là.
La deuxième jointure est celle que tu avais toi-même dans ta requête, vers la table Humeur, pour récupérer le nom de l'humeur (j'imagine).
Faire
FROM t INNER JOIN j on t.jid = j.id
revient à faire ce que tu as fait toi :
FROM t, j WHERE t.jid = j.id
Je préfère personnellement l'écriture INNER JOIN, car elle permet de mieux cerner les erreurs éventuelles (produits cartésiens indésirables) et me semble plus lisible en séparant de la clause WHERE les contraintes réelles sur les données, de celles qui relèvent de la structure des données. Et elle permet quelques nuances comme les LEFT OUTER JOIN.
Xavier
patrice86
Messages postés
1378
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
26 novembre 2023
125
9 avril 2014 à 11:16
9 avril 2014 à 11:16
Bien.
Merci beaucoup Xavier ;)
Merci beaucoup Xavier ;)