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

Langage SQL Discussion :

Select sur une seule ligne à partir d'une table et plusieurs lignes pour Mysql


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Select sur une seule ligne à partir d'une table et plusieurs lignes pour Mysql
    Bonjour à tous,
    Mon problème est un peu le même que dans ce POST
    mais moi c'est pour pour Mysql.


    -----------
    Mes Tables ?
    -----------


    ---> Table avec des commandes
    TABLE_COMMANDE
    (
    ID_CDE (unique)
    Date
    )

    ---> Table avec des personnes
    TABLE_PERSONNE
    (
    ID_PERSONNE (unique)
    Nom
    )

    ---> table qui lie les deux : Une commande peux avoir plusieurs personnes et une personne peu avoir plusieurs commandes
    TABLE_CDE_PERSONNE
    (
    ID (unique)
    ID_CDE
    ID_PERSONNE
    )



    ------------------
    Ce que je veux ?
    ------------------
    Un tableau avec deux champs.

    CHAMP ID_CDE , Ma Liste de Nom(s) ;
    12 , 'Luc , sylvie' ; // 2 personnes attachés
    13 , 'Marc' ; // 1 personne attaché
    14 , 'Louis , Yves , Lucien' ; // 3 personnes attachés



    Je chercher la p'tite astuce SQL pour avoir dans un champs la concaténation des noms attachés à une commande.


    Merci par avance pour vos réponses.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ce n'est pas vraiment la même problématique.

    MySQL propose une fonction à partir de la version 4.1 qui s'appelle GROUP_CONCAT() et qui résoudra votre problème.

    Si vous êtes une une version antérieure, je vous invite à effectuer quelques recherches sur "String Aggregation".

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    ça marche !
    Bien joué ... merci énormement.
    Je ne connaissait pas cette fonction qui est trés utile.

    Maintenant je ne reussi pas à faire des recherches sur mon resultat GROUP_CONCAT, avec des tabes type innodb ... d'apres mes recherches c'est impossible. snifff

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id , GROUP_CONCAT(nm)
    FROM Ma_Table
    WHERE GROUP_CONCAT(nm) REGEXP '((b|p)asket)';
    merci

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Utilisez le premier résultat en sous-requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT * FROM
    (
    SELECT id , GROUP_CONCAT(nm) nm_gc
    FROM Ma_Table
    ) R1
    WHERE R1.nm_gc REGEXP '((b|p)asket)';
    La syntaxe est possiblement fausse car je ne connais pas du tout MySQL, mais vous voyez l'idée.

Discussions similaires

  1. [11g] Charger plusieurs lignes à partir d'une seule
    Par raz2008 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 02/12/2013, 15h55
  2. Drag de plusieurs lignes à partir d'une liste
    Par Samildanach dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 15/12/2010, 10h49
  3. Réponses: 4
    Dernier message: 10/10/2010, 11h46
  4. Réponses: 4
    Dernier message: 28/09/2010, 10h47
  5. Créer une fonction de plusieurs lignes à partir d'une chaine
    Par sopsag dans le forum Général Python
    Réponses: 5
    Dernier message: 21/10/2009, 18h29

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