Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 *************************
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 *************************
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 *************************
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 !
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 !
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 !
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...
> 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...
> 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...
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
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
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
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 ?