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

 MySQL Discussion :

Insertion de plusieurs IDs dans une colonne


Sujet :

MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Insertion de plusieurs IDs dans une colonne
    Bonjour Tt le monde,
    J'ai besoin de votre aide, actuellement je suis entrain de creer une BD pour la gestion des interventions préventifs, j'ai plusieurs tables et parmi ces tables il y a une nommée intervention sur laquelle j'ai des intervenants, alors mon souci c'est que je veux insérer plusieurs IDs_intervenant qui doit pointer sur la table "interventions_acteurs" mais je suis bloqués là .

    Serait-il possible de me dire ce que je dois faire afin que dans la table interventions insérer plusieurs IDs_intervenant et les récupérer par la suite

    J’espère que mes explications était claire

    Par avance merci et très bonne journée

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    La règle de base est: une colonne => une donnée.
    Donc ici il te faut une table qui fait le lien entre les tables "intervention" et "intervenant".

    Tatayo.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse, dans ce cas je vais créer une nouvelle table intitulé 'intervenants_interventions', avec les deux clé 'intervention_id' et 'intervenant_id' sur laquelle on trouve tous les intervenants avec leurs IDs et les interventions affectées ?

    Je n'ai pas bien saisie vu que je suis débutant dans Mysql

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Petite précision,
    J'ai déjà une autre base de données sur laquelle on voit bien les IDs des intervenants stocker dans la colonne 'id_acteurs_inter'

    Nom : Capture.PNG
Affichages : 127
Taille : 22,5 Ko

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Une seule réponse en voyant celà :
    Bien des problèmes en perspective pour écrire des requêtes sur ces identifiants...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Là je suis vraiment perdu , est-ce_qu'on créant une nouvelle table qui regroupe les IDs_interventions et intervenant avec une jointure fera l'affaire ?

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Oui, c'est de très loin la meilleure solution.
    • Deux colonnes avec les identifiants respectifs des deux tables liées.
    • Les contraintes d'intégrité référentielle associées.
    • Une contraite d'unicité sur la ligne.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    Citation Envoyé par molotov_4
    j'ai plusieurs tables et parmi ces tables il y a une nommée intervention sur laquelle j'ai des intervenants, alors mon souci c'est que je veux insérer plusieurs IDs_intervenant qui doit pointer sur la table "interventions_acteurs" mais je suis bloqués là.
    Votre table "intervention" possède un identifiant de type technique qui permet d'indentifier vos intervenants.
    C'est cette information que vous devez utiliser pour pointer vers votre table "intervention".

    L'idée est d'utiliser les clefs étrangères.
    C'est-à-dire dans votre autre table, vous devez créer une colonne, par exemple de nom "clef_intervenant" et mettre l'identifiant qui va pointer sur la table "intervention".
    Si j'ai bien compris, votre problème est que vous avez plusieurs intervenants qui font tous être associés à la même ligne, comme dans votre exemple "id_acteur_interv".

    Comme le dit Tatayo, vous devez appliquer la "Première forme normale", c'est-à-dire "dont les attributs possèdent tous une valeur sémantiquement atomique" !
    Comme dans votre colonne, vous mettez plusieurs identifiant, cette colonne peut à son tour être décompose et de ce fait, la valeur n'est pas atomique.

    Pour résoudre ce problème, vous devez créer une table association, où vous aurez deux colonnes, l'une pointant sur votre table "intervenant" et une autre colonne ppointant vers votre table "intervention".
    Ainsi pour une intervention, vous aurez la liste de tous les intervenant et cela ne pose aucun problème en ce qui concerne la normalisation.

    Citation Envoyé par molotov_4
    dans ce cas je vais créer une nouvelle table intitulé 'intervenants_interventions', avec les deux clé 'intervention_id' et 'intervenant_id' sur laquelle on trouve tous les intervenants avec leurs IDs et les interventions affectées
    C'est tout à fait ce que vous devez faire.

    Citation Envoyé par molotov_4
    Je n'ai pas bien saisie vu que je suis débutant dans Mysql
    Un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `mere_one`
    --------------
     
    --------------
    CREATE TABLE `mere_one`
    ( `id`    integer unsigned  NOT NULL auto_increment primary key,
      `mess`  varchar(255)      NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `mere_one` (`mess`) values
      ('un'),('deux'),('trois')
    --------------
     
    --------------
    select * from `mere_one`
    --------------
     
    +----+-------+
    | id | mess  |
    +----+-------+
    |  1 | un    |
    |  2 | deux  |
    |  3 | trois |
    +----+-------+
    --------------
    DROP TABLE IF EXISTS `mere_two`
    --------------
     
    --------------
    CREATE TABLE `mere_two`
    ( `id`    integer unsigned  NOT NULL auto_increment primary key,
      `info`  varchar(255)      NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `mere_two` (`info`) values
      ('eins'),('zwei'),('drei'),('one'),('two'),('three')
    --------------
     
    --------------
    select * from `mere_two`
    --------------
     
    +----+-------+
    | id | info  |
    +----+-------+
    |  1 | eins  |
    |  2 | zwei  |
    |  3 | drei  |
    |  4 | one   |
    |  5 | two   |
    |  6 | three |
    +----+-------+
    --------------
    DROP TABLE IF EXISTS `fille`
    --------------
     
    --------------
    CREATE TABLE `fille`
    ( `id`        integer unsigned  NOT NULL auto_increment primary key,
      `clef_one`  integer unsigned  NOT NULL,
      `clef_two`  integer unsigned  NOT NULL,
      CONSTRAINT `FK_ONE` FOREIGN KEY (`clef_one`) REFERENCES `mere_one` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
      CONSTRAINT `FK_two` FOREIGN KEY (`clef_two`) REFERENCES `mere_two` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `fille` (`clef_one`,`clef_two`) values
      (1,1),(1,4),
      (2,2),(2,5),
      (3,3),(3,6)
    --------------
     
    --------------
    select * from `fille`
    --------------
     
    +----+----------+----------+
    | id | clef_one | clef_two |
    +----+----------+----------+
    |  1 |        1 |        1 |
    |  2 |        1 |        4 |
    |  3 |        2 |        2 |
    |  4 |        2 |        5 |
    |  5 |        3 |        3 |
    |  6 |        3 |        6 |
    +----+----------+----------+
    --------------
    select t2.mess,
           t3.info
     
          from  `fille`    as t1
     
    inner join  `mere_one` as t2
            on  t2.id = t1.clef_one
     
    inner join  `mere_two` as t3
            on  t3.id = t1.clef_two
    --------------
     
    +-------+-------+
    | mess  | info  |
    +-------+-------+
    | un    | eins  |
    | un    | one   |
    | deux  | zwei  |
    | deux  | two   |
    | trois | drei  |
    | trois | three |
    +-------+-------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    Deux tables et une table fille.
    Dans la dernière requête, vous associez les lignes de la première table mère avec les lignes de la seconde table mère.

    Par contre, je n'ai pas compris le contenu de la colonne "id_acteur_interv".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Salut Artemus24, je vous remercie infiniment pour votre réponse complète rien à dire
    vous m'avez bien aider, c'est effectivement l'idée qui m est venue en tête.

    Citation Envoyé par Artemus24 Voir le message

    Par contre, je n'ai pas compris le contenu de la colonne "id_acteur_interv".
    il s'agit d'une ancienne BDD sur laquelle je suis entrain de récupérer les articles "Pièces de rechange - capteurs - GPS ....), et sur la base il y a déjà des interventions qui sont enregistrées comme dans le capture d'ecran précédent.

    Je ne vois pas comment ils ont fait pour obtenir ces insertions.

    Mais bon ça doit être sûrement des requêtes qui stocke les Id des intervenants dans ce champ "id_acteur_interv".

    Je vais me baser sur votre exemple pour faire le travail en propre

    Salutations,

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut molotov_4.

    Vous devriez mettre votre sujet à résolu !

    Bonne continuation.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] Insertion avec plusieurs mots dans une colonne
    Par cyrilherve dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2009, 08h41
  2. [WD9] Insertion de plusieur lignes dans une rubrique
    Par loic20h28 dans le forum WinDev
    Réponses: 39
    Dernier message: 06/06/2008, 19h02
  3. Insertion de plusieurs graphiques dans une même feuille
    Par cmoicv dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/03/2008, 22h22
  4. [vba-e] insertions de plusieurs cellules dans une
    Par titeZ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2007, 17h14
  5. Réponses: 6
    Dernier message: 10/08/2006, 15h45

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