SQL selectionner selon un maximum
Résolu/Fermé
batoune
Messages postés
538
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
4 avril 2017
-
29 avril 2009 à 11:39
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 - 29 avril 2009 à 12:18
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 - 29 avril 2009 à 12:18
A voir également:
- SQL selectionner selon un maximum
- Sélectionner texte pdf - Guide
- Comment sélectionner un message sur whatsapp pour y répondre - Guide
- Sélectionner une extension d'un fichier qui s'ouvre avec un traitement de texte - Guide
- Logiciel sql - Télécharger - Bases de données
- Nombre de ligne maximum excel ✓ - Forum Excel
2 réponses
chossette9
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 308
29 avril 2009 à 11:44
29 avril 2009 à 11:44
SELECT nom,lieu,MAX(numero)
FROM ta_table
GROUP BY nom,lieu;
Normalement ceci devrait fonctionner.
FROM ta_table
GROUP BY nom,lieu;
Normalement ceci devrait fonctionner.
batoune
Messages postés
538
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
4 avril 2017
96
29 avril 2009 à 12:18
29 avril 2009 à 12:18
Je progresse, en fesant :
SELECT nom, lieu, MAX(numero)
FROM matable
WHERE CAST(FLOOR(CAST(laDate AS FLOAT)) AS DATETIME) = '20090428'
GROUP BY nom, lieu
ORDER BY lieu, nom
Sa me renvoi un résultat, mais maintenant si je rajoute un autre champ dans le select
SELECT nom, lieu, etat, MAX(numero)
FROM matable
WHERE CAST(FLOOR(CAST(laDate AS FLOAT)) AS DATETIME) = '20090428'
GROUP BY nom, lieu
ORDER BY lieu, nom
Sa me dit que etat n'est pas valide car pas dans la clause GROUP BY mais si je le rajoute dedans sa me renvois le numero max pour les couple(nom/lieu/etat) mais moi je les veux juste pour les couples (nom/lieu) avec l'indication des etats pour chaque couple mais sans que etat entre dans la comparaison pour les numero max
par exemple si j'ai 2couple
nom = pierre, lieu=maison, etat=OK, numero = 6
nom = pierre, lieu=maison, etat=KO, numero = 7
je ne veux que le deuxieme, or avec etat dans la clause group by il me renvoi les 2!!
SELECT nom, lieu, MAX(numero)
FROM matable
WHERE CAST(FLOOR(CAST(laDate AS FLOAT)) AS DATETIME) = '20090428'
GROUP BY nom, lieu
ORDER BY lieu, nom
Sa me renvoi un résultat, mais maintenant si je rajoute un autre champ dans le select
SELECT nom, lieu, etat, MAX(numero)
FROM matable
WHERE CAST(FLOOR(CAST(laDate AS FLOAT)) AS DATETIME) = '20090428'
GROUP BY nom, lieu
ORDER BY lieu, nom
Sa me dit que etat n'est pas valide car pas dans la clause GROUP BY mais si je le rajoute dedans sa me renvois le numero max pour les couple(nom/lieu/etat) mais moi je les veux juste pour les couples (nom/lieu) avec l'indication des etats pour chaque couple mais sans que etat entre dans la comparaison pour les numero max
par exemple si j'ai 2couple
nom = pierre, lieu=maison, etat=OK, numero = 6
nom = pierre, lieu=maison, etat=KO, numero = 7
je ne veux que le deuxieme, or avec etat dans la clause group by il me renvoi les 2!!
29 avril 2009 à 11:53
SELECT nom, lieu, MAX(numero)
FROM matable
WHERE CAST(FLOOR(CAST(laDate AS FLOAT)) AS DATETIME) = '20090428'
ORDER BY lieu, nom, numero
et j'ai une erreur qui me dit :
La colonne 'matable.nom' est incorrecte dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation et qu'il n'y a pas de clause GROUP BY.
La colonne 'matable.lieu' est incorrecte dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation et qu'il n'y a pas de clause GROUP BY.
La colonne 'matable.numero' n'est pas valide dans la clause ORDER BY parce qu'elle n'est pas contenue dans une fonction d'agrégation et qu'il n'y a aucune clause GROUP BY.