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 paramétré par rapport à des données existantes


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut INSERT INTO paramétré par rapport à des données existantes
    Bonsoir à tous,

    Tout d'abord, je tiens à préciser que j'ai déjà cherché dans le forum (pendant une heure en fait) et que je n'ai pas trouvé de réponse à ma question.


    Je cherche à créer des données dans une table en fonction de données présentes dans une autre table. Nous sommes en phase de production et certains éléments de la base doivent être entrés manuellement, ce qui s'avère compliqué lorsque le client change d'avis comme de chemise et fourni une quantité de données croissantes.

    pour résumer de manière simple :

    table_1 :
    [pk_1, champ1_1, champ1_2]

    table_2 :
    [pk_2, champ2_1, champ2_2]

    on a une relation 1,n avec pk_1=champ2_1

    je voudrais créer des entrées dans la table 2 (une par élément de la table 1) avec une valeur statique dans le champ2_1.


    Mes investigations m'ont conduit à écrire ceci (qui ne marche pas), en espérant ne pas être au summum du ridicule et que ça vous aide à comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE PROCEDURE insert_ref()
    BEGIN
    	DECLARE ids CURSOR FOR SELECT pk_1 FROM annuaire_crediteur;
    	DECLARE id INT(11);
    	OPEN ids;
    	REPEAT
    		INSERT INTO table_2(champ2_1, champ2_2) VALUES (id, 'blabla');
    	UNTIL id ==NULL EN REPEAT;
    	CLOSE ids;	
    END
    n'hésitez pas à me poser des questions pour percer mon esprit des plus étranges.

    Merci à tout ceux qui m'auront lu, avec ou sans solution.

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    normal, il y a 2 problèmes:
    • tu lis jamais ton curseur
    • et c'est "end repeat"



    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
    delimiter $$
    drop procedure if exists insert_ref$$
    CREATE PROCEDURE insert_ref()
    BEGIN
    	DECLARE ids CURSOR FOR SELECT pk_1 FROM annuaire_crediteur;
    	DECLARE id INT(11);
    	OPEN ids;
    	REPEAT
    		fetch ids into id;
    		INSERT INTO table_2(champ2_1, champ2_2) VALUES (id, 'blabla');
    	UNTIL id ==NULL END REPEAT;
    	CLOSE ids;	
    END$$
    delimiter ;

    ça marchera mais je te conseille de tester si tu arrives enfin de curseur, c'est plus propre... ça peut se faire en déclarant un handler et en testant avec si tu atteint la fin alors tu commute un if qui entoure ton insert pour ne le faire que si tu as besoin...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    salut,

    normal, il y a 2 problèmes:
    • tu lis jamais ton curseur
    • et c'est "end repeat"

    Ah, ça se lit un curseur ?
    Je n'avais pas compris du tout comment ça marche en fait, merci de m'éclairer.

    Pour le "end repeat", une erreur de saisie, bien entendu.

    Citation Envoyé par ericd69 Voir le message
    ça marchera mais je te conseille de tester si tu arrives enfin de curseur, c'est plus propre... ça peut se faire en déclarant un handler et en testant avec si tu atteint la fin alors tu commute un if qui entoure ton insert pour ne le faire que si tu as besoin...
    En fait, c'est ce que je pensais faire, mais j'étais pas vraiment en état de comprendre manifestement.

    En tout cas, un grand merci et si jamais tu connais un bon tuto/cours pour SQL/MySQL, je suis preneur !

    Bonne soirée, vu que c'est déjà la soirée

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    regarde déjà les cours sur le site, ils sont pas mal fait
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    OK, merci beaucoup encore une fois.

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

Discussions similaires

  1. [XL-2010] Tableau automatique par rapport à des données d'un autre tableau
    Par ZHNEE dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/12/2014, 19h21
  2. Réponses: 5
    Dernier message: 23/09/2014, 17h47
  3. [AC-2010] Lecture sons par rapport à des données
    Par Stoo69 dans le forum IHM
    Réponses: 12
    Dernier message: 29/04/2012, 14h47
  4. Algo de placement par rapport à des périodes données
    Par romfret dans le forum Algorithmes et structures de données
    Réponses: 17
    Dernier message: 28/04/2011, 17h11
  5. Html : liste de choix par rapport à des choix
    Par Djwaves dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/03/2006, 16h52

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