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

Langage SQL Discussion :

operation conditionnelle sur colonne dans un select


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut operation conditionnelle sur colonne dans un select
    bonjour,

    j'ai 2 valeurs binaire, BIN_A et BIN_B sur chaque ligne d'une table TABLE, que j'aimerai combiner dans une seule colonne INT_N d'un select selon cet algo :

    -----------------
    si TABLE.BIN_A est true, alors INT_N = 2
    sinon si TABLE.BIN_B est true, alors INT_N = 1
    sinon INT_N = 0
    -----------------

    et je ne vois pas du tout par où commencer. Auriez-vou une idée s'il-vous-plait ?

    PS : Je suis sous SQL2000

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    update table set int_n = 0;
    update table set int_n = 1 where bin_b;
    update table set int_n = 2 where bin_a;

  3. #3
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    oui, mais il s'agit là d'un select, et j'aimerai éviter de tout stocker dans une table temporaire

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Monstros Velu
    oui, mais il s'agit là d'un select, et j'aimerai éviter de tout stocker dans une table temporaire
    Pourquoi ne pas utiliser la structure CASE ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    je viens de trouver une solution :
    j'ai créé une fonction qui fait le calcul, GET_STATUS(BIN_A, BIN_B) avec l'algorythme mentionné plus haut, et que j'apelle dans mon select.



    quant à la structure CASE, je ne peux pas la mettre à l'intérieur d'un select (à moins que je me trompe ?), ce qui m'oblige à recopier plusieur fois ma jointure sur 7 tables avec 9 clauses "where" dont 4 sous-requêtes (j'avais réduit le problème de départ pour éviter de tout mentionner), c'est un peu lourd à maintenir si je dois tout recopier à chaque fois dans chaque bloc CASE.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    autant pour moi, j'avais pas bien lu
    avec un case, ca devrait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select case when bin_a then 2
                      when bin_b then 1
                      else 0 end as int_n
      from table;
    je suis pas familier avec le sql2000, mais je crois que c'est du standard sql

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

Discussions similaires

  1. Créer 2 colonnes dans un <select>
    Par Goupo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 01/04/2009, 09h32
  2. traitement des colonnes dans un select
    Par dug dans le forum SQL
    Réponses: 5
    Dernier message: 26/02/2009, 22h13
  3. [2000] Boucle de Maj conditionnelle sur colonne
    Par lunab54 dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/12/2007, 13h19
  4. Rajouter une colonne dans un select *
    Par phb07 dans le forum Oracle
    Réponses: 5
    Dernier message: 30/03/2007, 12h51
  5. Requete conditionnelle sur colonne
    Par BLazE dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 22/02/2007, 17h51

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