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 :

Jointure vers des ID séparés par des virgules (possible ?)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 26
    Points
    26
    Par défaut Jointure vers des ID séparés par des virgules (possible ?)
    Bonjour,

    J'ai une table MySQL avec des noms :

    Id | nom
    1 | Pierre
    2 | Simon
    3 | Paul
    ...

    J'ai ensuite une autre table (par exemple ville) qui les lient, en assemblant les noms par leurs ID séparés par une virgule (un exemple s'impose ;-) ) :

    Id | Id_nom (de la table nom) | ville
    1 | 1,3 | Paris
    2 | 5,9,6,3 | Lyon
    ...


    Et je souhaiterais (sans passer par mon SGBD, mais je ne sais pas si s'est possible) afficher le nom à la place des id dans ma table ville. ce qui donnerait pour le 1er enregistrement :

    1 | Pierre, Paul | Paris

    Je cherche depuis longtemps mais j'ai bien peur qu'il n'y est pas de commande SQL permettant d'avoir ce résultat (c'est pour un moteur de recherche, voilà pourquoi je souhaiterais que tout se fasse par requêtes).

    Je me retourne alors vers les expert du SQL !
    ;-)

    Si quelqu'un à une idée, je suis prenneur. Merci d'avance !
    ;-)

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !
    Je pense que ça va être comliqué...
    Si tu veux lier des noms entre eux, je te suggèrerais de modéliser ton lien différemment, genre :

    IdLien | Indice | IdLié | Ville
    1 | 1 | 1 | Lyon
    1 | 2 | 3 | Lyon

    (tu peux même faire une table supplémentaire pour sortir la ville).
    Ensuite, pour afficher des concaténation, il faut que tu le traites dans ton programme à partir de la jointure ...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 26
    Points
    26
    Par défaut
    Salut Pacmann

    Merci pour ta réponses. Je pense effectivement qu'il n'y a pas de solution (ce qui ne m'arrange pas car je ne peux pas bouger ma structure).

    Je vais continuer à chercher et vous tiens informé si je trouve une solution (je ne suis peut-être pas le seul confronté à ce problème).

    Merci.

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Par une procedure vous pourrez vous dépatouiller
    Par une seule requete je ne pense pas.

    bon courage

  5. #5
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 327
    Points
    4 327
    Par défaut
    Bonjour,

    Merise a pour but d'assurer la possibilité de récupérer les informations d'une base de données.
    La première forme normal portant en partie sur l'atomicité des valeurs dans les champs (interdiction de multi-valuer donc ces champ) n'est ici pas respecté.

    Je sais que ça n'aidera pas à résoudre le problème mais je me permet de souligner qu'une mauvaise conception ici bloque l'exploitation des données.

    Pour résoudre le problème je pense qu'une procédure stocké peut générer une table temporaire qui permettra d'effectuer une jointure classique.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2015, 00h12
  2. Réponses: 5
    Dernier message: 24/02/2011, 15h21
  3. [MySQL] Alimenter un tableau par des string séparés par point virgule
    Par Zikas-r dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/04/2009, 11h19
  4. [RegEx] Extraire des nombres séparés par des caractères spéciaux
    Par GouKen dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 16h49
  5. Réponses: 6
    Dernier message: 10/10/2007, 23h26

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