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

PHP & Base de données Discussion :

Boucle de INSERT [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Par défaut Boucle de INSERT
    Bonjour à tous!

    Voici mon soucis, étant (très) débutant en MySQL, je souhaite copier des données de plusieurs et différentes tables dans une nouvelle table.Comme cette table contient énormément de ligne, je préfère faire ca dans un boucle, voici mon 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
    18
    19
    20
    21
    declare
    var integer;
     
    begin
     
    select count(*) into var from produit;
     
    while var!=0
    loop
     
    INSERT INTO inventaire (CODE_CIP_PROD) VALUES (CODE_CIP_PRODUIT.produit);
    INSERT INTO inventaire (NOM_PROD) VALUES (NOM_PRODUIT.produit);
    INSERT INTO inventaire (QTE_STOCK_PROD) VALUES (QTE_STOCK_PRODUIT.produit);
    INSERT INTO inventaire (PRIX_ACHAT_ADMIN) VALUES (PRIX.prix_achat_admin);
    INSERT INTO inventaire (PRIX_LIGNE_TOTAL) VALUES (QTE_STOCK_PROD*PRIX_ACHAT_ADMIN);
     
    var:=var-1;
     
    end loop;
     
    end;
    Voila! Ce que je veux faire, c'est allé dans le phpmyadmin et lancé dans la console (exécuter la requête). Et ca ne marche pas! (bien entendu Oo)

    Des idées? Des pistes de solutions ? Merci!

    Redg.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Pour commencer la syntaxe c'est TABLE.COLONNE et non l'inverse.

    Ensuite tu ne peux pas faire plusieurs INSERT pour remplir une meme ligne : un INSERT créé un enregistrement complet.

    Remplir une table depuis une autre ce fait ainsi :
    INSERT INTO table (SELECT recuperant les champs dans d'autres tables)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Par défaut
    Bonjour, tu pourrais me donner un exemple pour ca :

    NSERT INTO table (SELECT recuperant les champs dans d'autres tables)
    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Par défaut
    Voici un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    INSERT INTO inventaire (CODE_CIP_PROD, NOM_PROD, QTE_STOCK_PROD, PRIX_ACHAT_ADMIN,PRIX_LIGNE_TOTAL= QTE_STOCK_PROD*PRIX_ACHAT_ADMIN)
    VALUES (
      SELECT CODE_CIP_PRODUIT FROM produit,
      SELECT NOM_PRODUIT FROM produit,
      SELECT QTE_STOCK_PRODUIT FROM produit,
      SELECT PRIX_ACHAT_ADMIN FROM prix_achat_admin
    );
    Tu en penses quoi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Par défaut
    requête revu et corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    INSERT INTO inventaire (CODE_CIP_PROD, NOM_PROD, QTE_STOCK_PROD, PRIX_ACHAT_ADMIN,PRIX_LIGNE_TOTAL= QTE_STOCK_PROD*PRIX_ACHAT_ADMIN)
      SELECT CODE_CIP_PRODUIT,NOM_PRODUIT, QTE_STOCK_PRODUIT FROM produit 
      AND SELECT PRIX_ACHAT_ADMIN FROM prix_achat_admin;);
    EDIT :

    Ou encore celle la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    INSERT INTO inventaire (CODE_CIP_PROD, NOM_PROD, QTE_STOCK_PROD, PRIX_ACHAT_ADMIN,PRIX_LIGNE_TOTAL= QTE_STOCK_PROD*PRIX_ACHAT_ADMIN)
      SELECT CODE_CIP_PRODUIT,NOM_PRODUIT, QTE_STOCK_PRODUIT,PRIX_ACHAT_ADMIN FROM produit,prix_achat_admin
    Ca me sort toujours la même erreur, il n 'aime pas que je fasse ca :
    PRIX_LIGNE_TOTAL= QTE_STOCK_PROD*PRIX_ACHAT_ADMIN

    Une solution ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Par défaut
    Tu as oublié le "VALUES" et des paranthèses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO inventaire (CODE_CIP_PROD, NOM_PROD, QTE_STOCK_PROD, PRIX_ACHAT_ADMIN,PRIX_LIGNE_TOTAL= QTE_STOCK_PROD*PRIX_ACHAT_ADMIN) VALUES (
      SELECT CODE_CIP_PRODUIT,NOM_PRODUIT, QTE_STOCK_PRODUIT,PRIX_ACHAT_ADMIN FROM produit,prix_achat_admin)

    De plus le fait de mutlitplié 2 champs, je ne sais pas si ca se fait comme ca... Mais peut-etre que si... je suis pas trop calé en SQL

    EDIT : Normalement pour le champ calculé ta une option dans le SGBD que tu utilise pour indiquer que c'est un champs calculé...

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

Discussions similaires

  1. [MySQL] Boucle d'insertion message d'erreur
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/05/2009, 01h54
  2. [MySQL] boucle d'insert MySql
    Par diice dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/10/2008, 09h26
  3. [MySQL] Boucle et INSERT si la ligne n'existe pas
    Par yazerty dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/09/2007, 12h56
  4. Boucle pour insertion d'enregistrement
    Par chris81 dans le forum SQLite
    Réponses: 1
    Dernier message: 11/07/2007, 11h36
  5. Boucle sur Insert
    Par stefposs dans le forum Access
    Réponses: 2
    Dernier message: 10/01/2007, 14h50

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