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 et SQL. Discussion :

Update critériel de plusieurs champs d'une même table


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Points : 68
    Points
    68
    Par défaut Update critériel de plusieurs champs d'une même table
    Bonjour,

    J'ai une table essai1 qui contient plusieurs champs (tous texte). Certains n'ont que deux modalités : O/N ; i/r ; 1/0 ...
    Je souhaiterai transformer mes O;i;1 en true et mes N;r;0 en false en une seule opération pour que ma table passe de :


    id champ1 champ2 champ3 champXi...
    1 N i 1 ...
    2 O r 1 ...
    3 O i 0 ...
    ...

    à

    id champ1 champ2 champ3 champXi...
    1 False True True ...
    2 True False True ...
    3 True True False ...


    (mes champXi sont des champs auxquels je ne souhaite pas toucher ; ils contiennent d'autres valeurs)
    J'ai fait une requête pour un champ et une modalité, cela fonctionne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE essai1 SET essai1.champ1 = "false"
    WHERE (((essai1.champ1) In ("0","i","Non","n","Faux";"N")));
    Bien sûr quand j'essaie de traiter deux champ à la fois cela ne fonctionne plus, ce qui est logique avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE essai1 SET essai1.champ1 = "false", essai1.champ2 = "false"
    WHERE (((essai1.champ1) In ("0","i","Non","n","Faux")) AND ((essai1.champ2) In ("0","i","Non","n","Faux")));

    Quelle méthode dois-je adopter :
    1. Insérer une ligne par champ et modalité, régroupée dans une macro ou une procédure ?
    2. Faire une boucle (du premier au dernier enregistrement) par champ avec iif, à nouveau regroupé dans une macro ou procédure




    Merci de vos conseils.

    Xorbane

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 014
    Points : 24 567
    Points
    24 567
    Par défaut
    Bonjour,

    Vu ou tu en es dans les requêtes pourquoi ne pas créer une nouvelle table avec les bons types (booléen) puis faire des requêtes insert.

    IIF() s'utilise également dans les requêtes (comme de nombreuses fonctions d'ACCESS). A moins que tu ne travailles pas avec le moteur Jet...

    Cordialement,

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Table2 ( Champ1, Champ2, Champ3 )
    SELECT IIf([Champ1]="N",False,True) AS c1, IIf([Champ2]<>"1",False,True) AS c2, IIf([Champ3]="i",True,False) AS c3
    FROM Table1;
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Tu peux utiliser la fonction Switch pour tout faire en une fois.
    Mais les champs mis à jour resteront du texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE essai1 
    SET champ1 = Switch([Champ1] In ("0","i","Non","n","Faux"), False, [Champ1] In ("1","r","Oui","o","Vrai"), True, True, [Champ1]) ,
    champ2 = Switch([Champ2] In ("0","i","Non","n","Faux"), False, [Champ2] In ("1","r","Oui","o","Vrai"), True, True, [Champ2])
    A+

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Points : 68
    Points
    68
    Par défaut Merci
    Merci à vous deux,

    J'ai suivi le conseil de Loufab en mettant à jour directement dans ma nouvelle table, puisque c'était bien le but initial. Je ne connaissais pas la fonction Switch... mais il est probable qu'elle me serve bientôt.

    Merci beaucoup. Je ne voyais pas comment m'en sortir.

    A plus.

    Xorbane

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

Discussions similaires

  1. [MySQL-5.6] Concaténer plusieurs champs d'une même table
    Par la_chouette dans le forum Requêtes
    Réponses: 14
    Dernier message: 11/04/2014, 15h41
  2. [AC-2003] Calcul / Somme de plusieurs champs d'une même table
    Par HenriJ dans le forum Access
    Réponses: 2
    Dernier message: 26/03/2014, 17h48
  3. Rassembler plusieurs champs d'une même table
    Par armata dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/09/2009, 16h10
  4. Plusieurs Champs d'une même table dans plusieurs textebox
    Par cyberbiker dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 13/09/2006, 11h32
  5. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18

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