[REQUETE SQL] Probleme lors de tri dans une requête
Résolu/Fermé
patrice86
Messages postés
1380
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
17 décembre 2024
-
Modifié par patrice86 le 3/04/2014 à 17:06
patrice86 Messages postés 1380 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 17 décembre 2024 - 9 avril 2014 à 11:16
patrice86 Messages postés 1380 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 17 décembre 2024 - 9 avril 2014 à 11:16
A voir également:
- [REQUETE SQL] Probleme lors de tri dans une requête
- Tri excel - Guide
- Logiciel de tri de photos - Guide
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Erreur de requete facebook - Forum Facebook
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Minecraft
2 réponses
Reivax962
Messages postés
3672
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
1380
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
17 décembre 2024
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
3672
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
1380
Date d'inscription
dimanche 26 octobre 2008
Statut
Membre
Dernière intervention
17 décembre 2024
125
9 avril 2014 à 11:16
9 avril 2014 à 11:16
Bien.
Merci beaucoup Xavier ;)
Merci beaucoup Xavier ;)