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 :

Insert Into à partir de plusieurs tables


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut Insert Into à partir de plusieurs tables
    Bonjour,
    je suis actuellement sur un projet comportant du MySql, et je voulais savoir comment faire pour faire un insert into à partir de plusieurs base de donner.
    Je doit remplir la table Contenir (lettrecategorie, nobateau, capacitemax) sauf que lettrecategorie vient de la table categorie et nobateau vient de la table bateau. Concernant capacitemax, ce sera rempli par une textbox donc pour lui aucun problème. Merci.

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

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 484
    Par défaut
    Bonjour,
    Pour pouvoir t'aider il nous faut la structure des tables mises en jeu, les liens entre ces tables, voir un jeu d'essai.

    Tatayo.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 669
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Ce ne sont a priori pas plusieurs bases de données, mais plusieurs tables.

    Ca doit ressemble à quelque chose comme (PK soulignées, FK suffixées #, contrainte unique en gras) :

    la table "catégorie" (lettrecategorie, code_categorie, nom_categorie...)
    la table "bateau" (nobateau, nom_bateau, tonnage_bateau, tirant_d_eau..., type_bateau#)
    la table associative "Contenir" (lettrecategorie #, nobateau #, capacitemax...)

    Comme pour toute table associative, la primary key (PK) de "Contenir" est composée des PK issues des tables associées (en l'occurrence les PK de "categorie" et de "bateau").

    Pour insérer dans une table associative, en considérant que les identifiants sont attribués par le SGBD, c'est à dire de type AUTO_INCREMENT pour MySQL

    CAS 1 : soit on vient d'insérer juste avant la valeur de PK dans l'une, l'autre ou les deux tables associées.
    Dans ce cas, après chaque insert dans la table dont on hérite de la PK, il faut récupérer la valeur insérée pour l'identifiant grâce à la fonction LAST_INSERT_ID(). Cette valeur est récupérée dans une host variable qu'on utilise ensuite pour l'insertion dans la table associative.

    CAS 2 : soit la valeur d'identifiant est déjà présente dans les tables associées
    Dans ce cas, il faut récupérer la valeur de l'identifiant par SELECT avant d'insérer dans la table associative

    Exemple d'insertion dans lequel on a d'abord créé un nouveau bateau (cas 1), puis recherché une catégorie existante (cas 2), avant d'insérer dans la table associative "contenir" :

    Code SQL : 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
    -- création du bateau
    insert into bateau
          (nom_bateau, tonnage_bateau, tirant_d_eau, type_bateau)
    values ('le pitalugue', 2.12, 0.50, 10)
    ;
    -- récupération de la valeur de l'identifiant inséré dans "bateau"
    select LAST_INSERT_ID into @idbateau
    ;
    -- recherche de l'identifiant pour la catégorie concernée
    select lettrecategorie into @catg
    from categorie
    where code_categorie='CAT001'
    ;
    -- création de la ligne "contenir"
    insert into contenir
          (lettrecategorie, nobateau, capacitemax)
    values @catg, @idbateau, 150
    ;

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    oui désolé plusieurs tables ** voici les liens entre elles
    Images attachées Images attachées  

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 669
    Billets dans le blog
    10
    Par défaut
    Le principe à appliquer reste le même : cf. réponse n° 3

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Le principe à appliquer reste le même : cf. réponse n° 3
    sauf que les @idbateau ect ne fonctionne pas

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

Discussions similaires

  1. Insert into à partir de données d'une autre table
    Par enterprise dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/06/2018, 12h48
  2. [2014] Insertion de données dans plusieurs tables à partir d'une vue
    Par shimomura22 dans le forum Développement
    Réponses: 2
    Dernier message: 05/08/2016, 00h44
  3. [2008R2] INSERT INTO venant de plusieurs tables
    Par Kazushi38 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 09/04/2014, 15h55
  4. [Oracle 9i] insertion a partir de plusieurs tables
    Par micoscas dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 18h26
  5. [SUM] récuperer une quantite a partir de plusieurs table
    Par Snowballz dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 14/09/2004, 19h48

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