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 :

Mettre un UPDATE en boucle help me please


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut Mettre un UPDATE en boucle help me please
    bonjour,

    je voudrais mettre une boucle sur un update car j'ai 83 colonnes (de 0 a 82) a modifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE import SET `0`=NULL
    WHERE `0`='(null)'
    j'ai tenté ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for($i=0; $i<=82; $i++)
    {
        requete('UPDATE import SET `$i`=NULL
    WHERE `$i`='(null)', 
    $connexion)
    }
    mais ça marche pas

  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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Fais-le dans la procédure stockée.
    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
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    bonjour,

    je pensais avoir resolu le probleme avec la procedure stockée mais en faite non

    je vous donne la procedure

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    DELIMITER |
     
    DROP PROCEDURE IF EXISTS import_donnees|
    CREATE PROCEDURE import_donnees( nbCapteur INTEGER)
     
    BEGIN
     
    DECLARE iter INTEGER DEFAULT 0; 
     
    iterwhile: WHILE iter <= nbCapteur DO 
     
      SET @myInsert:= CONCAT('
    INSERT INTO relever_mesure(valeur, id_calendrier_calendrier, id_station_Stations, id_capteur_capteur)
    SELECT i.`',iter,'`,
           c.id_calendrier,
           i.id_station,
           ',iter,' 
    FROM import i
    INNER JOIN calendrier c ON i.date_heure = c.date_heure_locale
    WHERE i.`',iter,'` IS NOT NULL'); 
     
     
      prepare stmnt FROM @myInsert; 
      EXECUTE stmnt; 
      DEALLOCATE PREPARE stmnt;
     
     
       SET iter = iter + 1; 
    END WHILE iterwhile;
    END
    je pensais qu'en changeant cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE i.`',iter,'` IS NOT NULL');
    par celle ci
    WHERE i.`',iter,'` !=(null));
    j'aurai resolu le probleme et ben non.
    Donc ma procedure initiale fonctionne bien mais il faut :
    soit que je rajoute, dans cette procedure, le update de ma table import
    soit que je dise de ne pas prendre les valeurs=(null)

    j'avoue je bloque un peu

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE i.`',iter,'` <> '(null)' ');

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    non ça ne marche pas ca me fait une erreur

    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
    22
    23
    24
    25
    26
    27
    Erreur
    Requête SQL: 
    # MySQL a retourné un résultat vide (aucune ligne).
    CREATE PROCEDURE import_donnees( nbCapteur INTEGER ) BEGIN DECLARE iter INTEGER DEFAULT 0;
     
    iterwhile : WHILE iter <= nbCapteur DO SET @myInsert := CONCAT( ' INSERT INTO relever_mesure(valeur, id_calendrier_calendrier, id_station_Stations, id_capteur_capteur) SELECT i.`', iter, '`, c.id_calendrier, i.id_station, ', iter, ' FROM import i INNER JOIN calendrier c ON i.date_heure = c.date_heure_locale WHERE i.`', iter, '` <> '(
    NULL
    ) ' ' ) ;
     
    prepare stmnt FROM @myInsert ;
     
    EXECUTE stmnt;
     
    DEALLOCATE PREPARE stmnt;
     
    SET iter = iter +1;
     
    END WHILE iterwhile;
     
    END # MySQL a retourné un résultat vide (aucune ligne).
    MySQL a répondu: 
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(null)' '); 
     
     
      prepare stmnt FROM @myInsert; 
      EXECUTE stmnt; 
      DEALL' at line 11
    je comprend pas pourquoi il me dit ça, dans ma table import les valeurs sont soit des chiffres soit (null), la meme requete avec " IS NOT NULL" a la place de (null) fonctionne nickel
    est ce que ce ne serait pas plus simple de faire un update sur ma table import , dans le genre mais avec une boucle en plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE import SET `0`=NULL
    where `0`='(null)'

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Bon bah comme ça alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE i.`',iter,'` <> "(null)"');

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    ça a l'aire de marcher ça tourne je te confirme ça des que ça a finis

    Merci bien, j'aurais pensé que ça pouvais venir des guillemets

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Je confirme ça marche nickel

    Un grand merci pour toi Fred_34

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

Discussions similaires

  1. Aide Update Avec Boucle
    Par kiza dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/02/2007, 15h04
  2. help jbuilder please
    Par blackcrow1981 dans le forum JBuilder
    Réponses: 6
    Dernier message: 10/11/2006, 18h05
  3. Tableaux, boucles help SvP
    Par 3xplo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/11/2006, 17h23
  4. Réponses: 2
    Dernier message: 21/03/2005, 10h17

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