Distinct [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 31-05-2005 à 16:14:31
Après avoir essayer avec une petite requete c'est facilement faisable :-/
Marsh Posté le 01-06-2005 à 09:11:01
mmh
j'ai a peu près le même problème
en fait, utilise le distinct ET le group by avec un max :
select distinct rapport, max(etat) from tatable group by rapport
Marsh Posté le 01-06-2005 à 10:12:00
a changer l'ordre de tri
(c véridique après test mais bon, je sors quand même, ca sert à rien)
Marsh Posté le 01-06-2005 à 10:34:19
c'est exactement ce que j'ai fait (sans le distinct)., J'ai éjouté l'ordre de tri avec un ORDER BY uisque ca sert a ca
select distinct rapport, max(etat) from tatable group by rapport ORDER BY max(rapport)
Marsh Posté le 01-06-2005 à 11:36:42
1. ton order by est faux, un simple order by rapport suffit
2. je persiste ton distinct ne te sert a rien
Marsh Posté le 01-06-2005 à 12:18:49
Virez-moi ce "distinct", il est déjà fait par le GROUP BY
Marsh Posté le 01-06-2005 à 12:55:47
DISTINCT:
j'avais copié la ligne de denzz et ai oublié de l'enlever.
ORDER BY:
La encore j'a commis une erreur
select rapport, max(etat) from tatable group by rapport ORDER BY max(date)
La date étant associé à un etat. J'ai été obligé d mettre le max() car autrement je devait mettre "date" dans le group by ce qui donne alors un résultat faux.
Marsh Posté le 01-06-2005 à 16:07:05
Mets plutôt :
select rapport, max(etat) as maxdate from tatable group by rapport ORDER BY maxdate
Ca change rien, mais c'est plus joli
Marsh Posté le 01-06-2005 à 16:21:03
Arjuna a écrit : Mets plutôt : |
select rapport, max(etat), max(date) as maxdate from tatable group by rapport ORDER BY maxdate
ca serait pas plutot ca ? max(etat) n'est pas la clause de son order by !
Marsh Posté le 01-06-2005 à 16:45:43
ha oui, en effet, c'est quoi ce truc de date d'abors ?
là, t'as mal mon coco, tu pourras pas faire le order by aussi simplement...
Marsh Posté le 01-06-2005 à 16:48:13
Code :
|
PS: si c'est une requête qui doit tourner sous MySQL, vérifie que t'as la dernière version, ou alors achète une codre
Marsh Posté le 31-05-2005 à 16:04:09
La fonction distinct permet de n'avoir en sortie que les lignes qui sont distincte l'un de l'autre.
Je voudrais n'avoir en sortie que les lignes dont une colonne (pas toutes) soit distincte
ex:
rapport | etat
1 | 1
1 | 2
1 | 3
2 | 1
3 | 1
Avec ou sans distinct j'obtiens ce resultat.
Voici le resultat que j'amerais avoir
rapport | etat
1 | 3
2 | 1
3 | 1
J'aimerais que le rapport soit unique et que l'état soit le maximum.
Dans ce cas on a gardé qu'un seul rapport 1 et c'est celui avec le plus gd etat (3)
C'est possible de faire cela en une seul requete? Avec plusieurs requetes je n'ai pas de pb pour le faire mais en une seul ce serait mieux ^^