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 :

Plusieurs insertions (insert + select) dans une meme requête


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut Plusieurs insertions (insert + select) dans une meme requête
    Bonjour,

    Je souhaiterais connaitre la bonne syntaxe pour insérer des enregistrements (insert + select multiple) dans une requête.

    Version insert multiple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO tatable (champ1, champ2) VALUES ('', ''),('', ''),('', '');
    Version insert + select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO tatable (champ1, champ2) SELECT champ1, 'champ2' FROM account WHERE test='test';
    Maintenant je cherche la solution qui me permettrais d'utiliser la version insert + select multiple.

    Avez vous la solution ?
    Merci de votre aide !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Les deux sy,taxes sont bonnes.
    Que veux-tu dire par "version insert + select multiple" ?
    Avec la seconde syntaxe, si le SELECT renvoie plusieurs lignes, il est évident que plusieurs lignes seront insérées dans la table.

    Donne un exemple concret pour qu'on comprenne mieux.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Merci pour ta réponse.

    Voici un exemple de ce que je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO tatable (champ1, champ2) (SELECT champ1, 'champ2' FROM account WHERE test='test'),(SELECT champ1, 'champ3' FROM account WHERE test='test'),(SELECT champ1, 'champ4' FROM account WHERE test='test');
    Je veux donc ajouter plusieurs enregistrements avec :
    1er élément : le retour du select qui sera toujours le même.
    2e élément : un champ diffèrent à chaque fois.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Et il y a plusieurs lignes de la table account qui répondent à la condition WHERE ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Le retour de mon select sera toujours le même et il n'y en aura qu'un.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Pourquoi mets-tu 'champ 2' (3 et 4) entre apostrophes ? Tu veux insérer le texte 'champ2' (3 et 4) comme valeurs ?

    Encore une fois, avec un exemple concret, c'est à dire réel, ce serait plus simple à comprendre.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $nbr = nombre enregistrements récupérés par une requête mysql précédente.
    $id_ce = " K00000123456";
    $requete = "INSERT IGNORE INTO locations_bis (id,date,id_film,prix) ";
    for($i=0;$i<$nbr;$i++)
    {
       $requete.= "(SELECT id,'$date_loc[$i]','$id_film[$i]','$prix[$i]' FROM id_ce WHERE id_ce='$id_ce'),";
    }
    $requete .= substr($requete,0,-1);

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    $nbr = nombre enregistrements récupérés par une requête mysql précédente.
    Je crois que c'est de ce côté qu'il faut remonter et faire une jointure avec cette première requête.

    Si j'ai bien compris, tu veux insérer dans une table locations_bis des données de la table id_ce pour certaines valeurs de l'identifiant de la table id_ce.

    Normalement, tu devrait pouvoir faire directement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT IGNORE INTO location_bis (id, `date`, id_film, prix)
    SELECT id, date_loc, id_film, prix
    FROM id_ce
    WHERE id_ce -- condition de sélection des id_ce à insérer
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Merci !

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

Discussions similaires

  1. plusieurs fonction d'agrégation dans une seul requête
    Par mohamedAmine00 dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/04/2015, 20h31
  2. [MySQL-5.5] Insert et Upadte dans une même requête
    Par coulby04 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2013, 21h13
  3. delete et insert dans une meme requête
    Par mawkli dans le forum Langage
    Réponses: 10
    Dernier message: 23/07/2012, 12h51
  4. Réponses: 1
    Dernier message: 28/04/2009, 09h57
  5. javascript/php:recuperer une valeur de select dans une meme page dans une var php
    Par hraiwen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/03/2009, 13h12

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