Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

select distint

5 réponses
Avatar
Steph
Bonjour,
je n'arrive pas a reproduire une commande mysql.
j'ai une table avec ces entrees :

col1 col2 col3
a b c
aa b cc
s a x
q a u

je souheterai donc faire un group by sur la col2 et ne recuperer que une
seule entree de col2,
soit par exemple :
a b c
s a x

mais qu'importe des valeurs de col1 et col3, tant que j'ai col2 avec des
valeurs dans col1 et 3

comment faire ???

merci

5 réponses

Avatar
Fred BROUARD
Steph a écrit :
Bonjour,
je n'arrive pas a reproduire une commande mysql.
j'ai une table avec ces entrees :

col1 col2 col3
a b c
aa b cc
s a x
q a u

je souheterai donc faire un group by sur la col2 et ne recuperer que une
seule entree de col2,
soit par exemple :
a b c
s a x

mais qu'importe des valeurs de col1 et col3, tant que j'ai col2 avec des
valeurs dans col1 et 3

comment faire ???



Par exemple :
SELECT max(col1), col2, max(col3)
FROM ...
GROUP BY col2

Vous pouvez aussi mettre min à la place de max.

A +


merci




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Avatar
Steph
Fred BROUARD wrote:
Steph a écrit :
Bonjour,
je n'arrive pas a reproduire une commande mysql.
j'ai une table avec ces entrees :

col1 col2 col3
a b c
aa b cc
s a x
q a u

je souheterai donc faire un group by sur la col2 et ne recuperer que
une seule entree de col2,
soit par exemple :
a b c
s a x

mais qu'importe des valeurs de col1 et col3, tant que j'ai col2 avec
des valeurs dans col1 et 3

comment faire ???



Par exemple :
SELECT max(col1), col2, max(col3)
FROM ...
GROUP BY col2

Vous pouvez aussi mettre min à la place de max.

A +


merci






et cela marche aussi avec des varchar ? car mes trois col sont en varchar !
Avatar
Patrice
> et cela marche aussi avec des varchar ? car mes trois col sont en varchar
!



Euh tu as essayé ? On peut comparer des varchar donc je ne vois pas ce qui
te fait penser que le min et la max pourraient ne pas fonctionner sur du
varchar. Tu risques d'avoir un problème par contre si tu essayes une moyenne
;-)

En complément cela donnera individuellement la valeur la plus élévée (ou la
moins élevée) de col1, col3 pour chaque valeur différente de col2. J'avais
un peu l'impression que tu voulais récupérer une des lignes (mais sur quel
critère ?) car les deux lignes de résultat sont présentes dans tes données
de départ et tu as les valeurs les plus petites pour b (a bc c) et les plus
grandes pour a (s a x). A clarifier si besoin...
Avatar
Steph
Patrice wrote:
et cela marche aussi avec des varchar ? car mes trois col sont en varchar
!



Euh tu as essayé ? On peut comparer des varchar donc je ne vois pas ce qui
te fait penser que le min et la max pourraient ne pas fonctionner sur du
varchar. Tu risques d'avoir un problème par contre si tu essayes une moyenne
;-)

En complément cela donnera individuellement la valeur la plus élévée (ou la
moins élevée) de col1, col3 pour chaque valeur différente de col2. J'avais
un peu l'impression que tu voulais récupérer une des lignes (mais sur quel
critère ?) car les deux lignes de résultat sont présentes dans tes données
de départ et tu as les valeurs les plus petites pour b (a bc c) et les plus
grandes pour a (s a x). A clarifier si besoin...







tout marche ! Effectivement il n'y a aucun problème avec des varchars
(ou autres type de données).
Voici un exemple d'utilisation :

INSERT INTO #MyTableVarOI (ID_OI,distance,tri) SELECT
b.id_oi,max(distance),max(capamax) as tri FROM #MyTableVarPRESTA a
LEFT JOIN OI_PRESTATIONS b
ON a.id_oi = b.id_oi
GROUP BY by b.id_oi
Avatar
helios services
Fred BROUARD a écrit :
Steph a écrit :
Bonjour,
je n'arrive pas a reproduire une commande mysql.
j'ai une table avec ces entrees :

col1 col2 col3
a b c
aa b cc
s a x
q a u

je souheterai donc faire un group by sur la col2 et ne recuperer que
une seule entree de col2,
soit par exemple :
a b c
s a x

mais qu'importe des valeurs de col1 et col3, tant que j'ai col2 avec
des valeurs dans col1 et 3

comment faire ???



Par exemple :
SELECT max(col1), col2, max(col3)
FROM ...
GROUP BY col2

Vous pouvez aussi mettre min à la place de max.

A +


merci






mais peut on faire confiance à quelqu'un qui prétends coder plus de
65536 valeurs sur 2 octets ?

http://groups.google.com/group/fr.comp.applications.sgbd/msg/621527f995585842?dmode=source





et donc les écrits ont été bannis de wikipedia

--
Dr Thierry HOLZ
HELIOS SERVICES
180 rue de la croix du chene
60250 HEILLES
www.openqm.com02.net
www.pick.com02.net