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 :

Insérer plusieurs lignes avec une seule requête


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Insérer plusieurs lignes avec une seule requête
    Bonjour à tous

    J'essaye d'enregistrer dans une seule requête, deux tables différentes donc une qui devra contenir plusieurs lignes générée en php (je sais pas si c'est possible..)

    Voici le code :

    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
    <?php
    $req2 = $bdd->prepare("
    		INSERT INTO dbo.ins(Date_ins, Id_Type, Id_sta) VALUES (CURRENT_TIMESTAMP, :type, :idsta);
     
    		INSERT INTO dbo.Sujet(Id_ins, Id_ep, Id_qu) 
    		VALUES ((SELECT Id_ins FROM dbo.ins WHERE Date_ins = CURRENT_TIMESTAMP), :idep, :idqu);
    		");
     
     
    $req2->execute(array(
    		'type' => 1,
    		'idsta' => $row['Id_sta'],
    		'idep' => $_POST['idep'],
    		'idqu' => ?????,
    		));
     
    ?>
    Pour info, $row['Id_sta'] est généré autre part et fonctionne parfaitement

    Mon problème est le suivant :

    Le premier INSERT INTO fonctionne..

    Mais le idqu du deuxième est le résultat d'une autre requête (je peux donc le récupérer sous forme de tableau) mais je ne sais pas comment écrire la requête pour que le deuxième INSERT INTO fasse plusieurs lignes, le nombre de lignes et la valeur de idqu changeront a chaque requête

    Autre question :

    Utiliser WHERE Date_ins = CURRENT_TIMESTAMP est risqué ? ou bien la valeur d'un CURRENT_TIMESTAMP sera toujours la même peu importe le temps d'exécution de la requête (par exemple si la requête met 1seconde a s'effectuer, est ce que la deuxième fois que j'appelle CURRENT_TIMESTAMP, il pourrait ne pas avoir la même valeur que la première fois et donc fausser le WHERE) ?

    Merci d'avance pour vos réponses !

  2. #2
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Vous êtes sur un forum réservé au langage SQL. Merci de ne pas faire apparaître de code php, mais du langage SQL...

    D'autre part, votre syntaxe est mauvaise : on ne peut pas utiliser le mot clé VALUES avec une sous requête.

    Voici la doc mySQL (http://dev.mysql.com/doc/refman/5.7/en/insert.html)
    Voici la doc Oracle (http://docs.oracle.com/cd/E11882_01/...4.htm#i2163698)
    Voici la doc postgreSQL (http://www.postgresql.org/docs/9.2/s...ql-insert.html)
    Voici la doc SQL Server (http://msdn.microsoft.com/fr-fr/libr...=sql.105).aspx)
    Voici la doc DB2 (http://publib.boulder.ibm.com/infoce...n/r0000970.htm)

    Pour tous ces SGBD, cette syntaxe est valide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO maTable (col1,col2,..) SELECT col1, col2, ... FROM maTableQuiContientLesDonnees
    Cordialement,

    Arkhena

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2014, 11h58
  2. Insérer des données sur plusieurs lignes dans une seule en SQL
    Par nathantahiti dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2011, 10h47
  3. [MySQL] Remplir plusieurs lignes d'une seule table avec le même formulaire
    Par zehni dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2006, 12h12
  4. Réponses: 4
    Dernier message: 07/09/2006, 12h12
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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