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 :

[PostGreSQL] select d'un champ ou d'un autre


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 53
    Points
    53
    Par défaut [PostGreSQL] select d'un champ ou d'un autre
    bonjour,
    j'ai une table contenant des articles avec (entre autre) comme colonnes "poids_vendu" (type flottant) et "nombre_vendu" (type entier). Si l'article est vendu à la pièce, c'est la colonne "nombre_vendu" qui sera remplie (et si l'article est au poids, ce sera la colonne "poids_vendu").
    je veux faire une simple requete "select" qui ne me retournera qu'une seule colonne "quantite" contenant soit le poids vendu soit le nombre vendu selon le type de l'article. au pire, je peux toujours faire la somme des 2 colonnes (puisque pour un même article, il y aura forcément une des 2 colonnes à 0) mais comme elles sont de types différent, la somme de marche pas.
    quelqu'un aurait-il une solution?
    merci d'avance

  2. #2
    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 78alex78
    quelqu'un aurait-il une solution?
    Oui j'ai une solution mais comme votre message est incomplet (Cf. le respect des règles du forum) alors ma réponse est aussi incomplète.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 53
    Points
    53
    Par défaut
    n'ayant pas trouvé "respect des règles du forum" j'imagine que vous voulez que je précise que je travaille avec une base PostGresql et que mom programme est écrit en php?
    sinon, je ne sais pas quelle règle je transgresse.

  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 78alex78
    n'ayant pas trouvé "respect des règles du forum"
    http://www.developpez.net/forums/showthread.php?t=944

    Concernant votre demande, j'avais une solution toute prête pour Oracle en l'occurence et comme je ne connais pas PostGreSQL et ses spécificités, je ne vous la propose pas.
    Cependant, la question qui me semble indispensable de se poser est de déterminer quel doit être le type de la colonne quantité : flottant ou entier ?
    En effet, à partir de cette information, vous convertissez (si c'est possible, cf votre SGBDR) la colonne qui n'est pas dans le format attendu avant d'en faire la somme.
    Enfin, si vous ne souhaitez pas de faire de somme alors vous pouvez utiliser une instruction équivalente à DECODE ou la structure CASE

    Qu'en pensez-vous ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 31
    Points
    31
    Par défaut
    Un code de ce genre devrait résoudre le problème... mais je ne vois pas pourquoi la conversion d'un integer en int ne se fait pas automatiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT CASE WHEN poids_vendu=0 THEN CAST(nombre_vendu as real)
                ELSE CAST(poids_vendu as real)
           END AS QUANTITE
    FROM ARTICLE;
    J'ai pas testé mais ça devrait marcher. Tiens nous au courant

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par tanita-twist
    Un code de ce genre devrait résoudre le problème... mais je ne vois pas pourquoi la conversion d'un integer en int ne se fait pas automatiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT CASE WHEN poids_vendu=0 THEN CAST(nombre_vendu as real)
                ELSE CAST(poids_vendu as real)
           END AS QUANTITE
    FROM ARTICLE;
    J'ai pas testé mais ça devrait marcher. Tiens nous au courant
    OK génial, c'est exactement ce qu'il me fallait.
    merci beaucoup tanita-twist.
    bonne journée à tous

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

Discussions similaires

  1. [SELECT] Faire un select avec des champs vides
    Par MinsK dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2005, 01h05
  2. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 16h30
  3. d'un select vers un champ text
    Par alexander dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2005, 15h14
  4. select sur un champ de type LONG
    Par ppd dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2004, 19h19
  5. Select * sauf un champ
    Par Hell dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/08/2004, 14h22

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