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
    Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
    "J-C Van dam"

  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.
    Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
    "J-C Van dam"

  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
    Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
    "J-C Van dam"

  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
    Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
    "J-C Van dam"

  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