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

Firebird Discussion :

Inverser la valeur d'un champ dans le résultat d'un SELECT


Sujet :

Firebird

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut Inverser la valeur d'un champ dans le résultat d'un SELECT
    Bonjour,

    Je souhaite alimenter une table avec les données d'une seconde table.
    Les données sont à récupérer telles quelles pour la plupart des champs à l'exception de deux champs de type SMALLINT ayant pour valeur 0 ou 1 et dont je voudrais qu'un champ 0 dans l'ancienne table soit égal à 1 dans la nouvelle, et inversement.
    Pour l'instant, j'ai fait une copie des données à l'aide d'une première requête (INSERT INTO ... SELECT ...) et je fait ensuite trois UPDATE en transformant les 1 en 2, les 0 en 1 et pour finir les 2 en 0.
    Ca fonctionne comme ça mais ce n'est pas très optimisé.
    Existe-t-il une fonction qui permettrait de retourner la valeur inverse de l'ancien champ directement dans le résultat du premier SELECT ?

    Merci de votre aide.

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Oui faite le directement dans le INSERT INTO SELECT.

    Il suffit de remplacer dans le select la colonne à traiter par un CASE.

    Admettons que la colonne à traiter s'appelle b_boolean.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select b_boolean, case b_boolean when 0 then 1 when 1 then 0 end from votreTable;
    La 2eme colonne correspond à la transformation que vous désirez faire.

    Donc dans le select qui sert à l'insert il vous suffit de remplacer la colonne (b_boolean dans l'exemple) par le case b_boolean when 0 then 1 when 1 then 0 end

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    Je vais tester ça.
    Merci.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/12/2005, 15h44
  2. valeur d'un champ dans une listbox
    Par ph4prod dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 13h00
  3. Arrondir la valeur d'un champ dans un état?
    Par drthodt dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2005, 16h46
  4. Changement valeur d'un champ dans une requête
    Par Mimile28 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/04/2005, 14h28
  5. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45

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