IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

CONCAT avec un ordre croissant


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut CONCAT avec un ordre croissant
    Bonjour,

    Je cherche à assembler 3 colonnes d'une table par ordre croisant.

    Avec 2 colonnes j'ai fait ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT(LEAST(S1.id, S2.id), '-', GREATEST(S1.id, S2.id))

    Mais avec 3 colonne je ne sais pas du tout comment faire, est ce que quelqu'un aurait une idée?

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Je vous propose ceci il y a peut-être mieux

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONCAT(LEAST(1,2,3), '-', CASE WHEN LEAST(1,2,3)<1 AND GREATEST(1,2,3)>1 THEN 1 WHEN LEAST(1,2,3)<2 AND GREATEST(1,2,3)>2 THEN 2 WHEN LEAST(1,2,3)<3 AND GREATEST(1,2,3)>3 THEN 3 END, '-', GREATEST(1, 2, 3))
    0x4F

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu travailles sur un SGDB en particulier ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    Désolé pour le retard, je travaile sous mysql.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux peut-être utiliser la fonction GROUP_CONCAT, si tu as une donnée commune entre les lignes.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    Merci pour ta réponse.

    Mais ce sont 3 colonnes d'une même ligne que je souhaite concaténer et non pas plusieurs ligne.
    exemple :
    Col1 | Col2 | Col3
    1 4 6
    4 2 7
    5 3 9

    Et je souhaiterai obtenir la concaténation croissante de chaque ligne.

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Soit vous faites les combinaisons nécessaires avec CASE, LEAST et GEATEST.
    Soit vous passer les colonnes en lignes avec UNION ALL puis vous faites un GROUP_CONCAT.

    La 2eme méthode est nettement chiante à écrire, mais probablement moins performante sur de gros volume

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as vraiment besoin de le faire au niveau de la requête ? Tu ne peux pas récupérer les 3 colonnes et faire la concaténation dans ton traitement PHP ensuite ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    Les 3 colonnes sont extraites de plusieurs jointure assez complexe donc je suis obligé de faire cette concatenation pour faire une comparaison dans la clause WHERE.

    exemple : concat(col1.col2.col3) NOT IN ($array)

Discussions similaires

  1. [XL-2013] Tri ordre croissant avec problème des doublons
    Par ussparasunki dans le forum Excel
    Réponses: 5
    Dernier message: 20/12/2014, 19h41
  2. requete SQL avec regroupement et classement par ordre croissant
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/03/2009, 17h01
  3. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 01h04
  4. tri avec l'ordre UPDATE et incrementation d'une colonne
    Par Staron dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/02/2004, 09h48
  5. Ordonner ds l'ordre croissant de 2 champs confondus
    Par Coolbens dans le forum Langage SQL
    Réponses: 11
    Dernier message: 17/06/2003, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo