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 :

Regrouper 2 update dans une seule requête


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut Regrouper 2 update dans une seule requête
    Bonjour,

    j'ai 2 update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = 'UPDATE ma_table SET qte=qte-1 WHERE nom = "georges"';
    $result = mysql_query($sql);
    $sql = 'UPDATE ma_table SET qte=qte+2 WHERE nom = "virginie"';
    $result = mysql_query($sql);
    je voudrais regrouper ces 2 update dans la même requête.

    merci

  2. #2
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut
    bonjour

    Ceci devrait t'aider mais c'est uniquement fonctionnel pour ces deux prénom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE ma_table,
    (SELECT nom,IF(nom='virginie',2,IF(nom='georges',2,0)) as NEWQTE FROM nom WHERE nom IN ('georges','virginie')) as ADDQTE 
    SET ma_table.QTE=ma_table.QTE+NEWQTE 
    WHERE ADDQTE.nom=ma_table.nom
    Cordialement

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    en fait, il y a plusieurs prénoms, comment faire ?

  4. #4
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut
    Il faut contruire ta requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT nom,IF(nom='virginie',2,IF(nom='georges',2,0)) AS NEWQTE FROM nom WHERE nom IN ('georges','virginie')) AS ADDQTE
    avec la liste de tout les prénoms et qté associée.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    Quand j'applique ta requête avec 2 noms, ma table ne s'actualise pas

  6. #6
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut
    dsl erreur de recopie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ma_table,
    (SELECT nom,IF(nom='virginie',2,IF(nom='georges',1,0)) as NEWQTE 
    FROM ma_table 
    WHERE nom IN ('georges','virginie')) as ADDQTE 
    SET ma_table.QTE=ma_table.QTE+NEWQTE WHERE  
    ADDQTE.nom=ma_table.nom
    le FROM nom etait foireux et j'avais par changé les qté etaient identiques pour les deux perso.

    Cordialement

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    impeccable ça fonctionne, j'aurais besoin de rajouter une autre condition je la place où
    merci

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    est-ce correct ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ma_table,
    (SELECT nom,IF(nom='virginie',2,IF(nom='georges',1,0)) AS NEWQTE 
    FROM ma_table 
    WHERE nom IN ('georges','virginie')) AS ADDQTE 
    SET ma_table.QTE=ma_table.QTE+NEWQTE WHERE  
    ADDQTE.nom=ma_table.nom AND ma_table.QTE != '0'
    est-ce que les requêtes prennent les !== pour différencier "" de 0

    merci

  9. #9
    Membre actif
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Points : 217
    Points
    217
    Par défaut
    Bonsoir,

    Ce que tu as mis dans ton dernier post devrait exclure de la mise a jour tout
    les enregistrement de ma table qui on une qte égale à 0
    Pour le différent c'est <> qui est utilisé.

    Cordialement

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    un autre pb , il faut que je regroupe ces 2 update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = 'UPDATE ma_table SET config_value = "roger" WHERE config_name = "newest_username"';
    $result = mysql_query($sql);
    $sql = 'UPDATE ma_table SET config_value = 250 WHERE config_name = "newest_user_id"';
    $result = mysql_query($sql);
    merci

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    ça fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE ma_table,
    (SELECT config_name,IF(config_name='newest_username','roger',IF(config_name='newest_user_id',250,0)) AS NEWCV 
    FROM ma_table 
    WHERE config_name IN ('newest_username','newest_user_id')) AS ADDCV 
    SET ma_table.config_value=NEWCV WHERE  
    ADDCV.config_name=ma_table.config_name
    merci

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    je reviens sur ce sujet, je voudrais mettre à jour 2 valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = 'UPDATE ma_table SET config_value = "roger", age = 40 WHERE config_name = "newest_username"';
    $result = mysql_query($sql);
    $sql = 'UPDATE ma_table SET config_value = 250, age = 0 WHERE config_name = "newest_user_id"';
    $result = mysql_query($sql);
    merci

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut
    est-ce correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE ma_table,
    (SELECT config_name,IF(config_name='newest_username','roger',IF(config_name='newest_user_id',250,0)) AS NEWCV
    FROM ma_table 
    WHERE config_name IN ('newest_username','newest_user_id')) AS ADDCV, 
    (SELECT config_name,IF(config_name='newest_username','40',IF(config_name='newest_user_id',0,0)) AS NEWCV2 
    FROM ma_table 
    WHERE config_name IN ('newest_username','newest_user_id')) AS ADDCV2 
    SET ma_table.config_value=NEWCV, ma_table.age=NEWCV2 WHERE  
    ADDCV.config_name=ma_table.config_name AND ADDCV2.config_name=ma_table.config_name

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/10/2010, 14h00
  2. Plusieurs comptages dans une seule requête
    Par DBA_OCP dans le forum Langage SQL
    Réponses: 9
    Dernier message: 01/12/2008, 19h54
  3. Réponses: 7
    Dernier message: 12/06/2008, 13h26
  4. Lier trois tables dans une seule requête ?
    Par tempirate dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2006, 19h27
  5. regrouper des informations dans une seule ligne
    Par rozow dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/04/2006, 16h03

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