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 :

Peut on insérer une condition dans une requête ?


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Points : 49
    Points
    49
    Par défaut Peut on insérer une condition dans une requête ?
    Table T1 = liste de mes articles vendus
    Table T2 = selon le code article et le CA vendu obtention d'une remise de xx%

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T1.CODE, T2.REMISE
    FROM T1 inner join T2 on T1.CODE = T2.CODE
    WHERE (T1.prix*T1.Qte) Between To_Number(T2.De) and To_Number(T2.A)
    (cf message du 19/09/05 - merci pour la réponse !!)

    Mes champs T2.De & T2.A (intervalle sont au format texte.
    si T2.De est null, comment lui attribuer la valeur 0

    comment inclure cette condition dans ma requête :
    (si isnull(T2.de) alors
    T2.de = 0
    fin si)

  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
    il existe une fonction ISNULL(<colonne>, <valeur>) mais je ne crois pas qu'elle soit supportée par tous les SGBD.

    Est-ce ça que tu recherches ?
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Je ne pense pas car dans la fonction between je ne sais pas comment se comporte la recherche lorsque T2.de est null
    cad
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    WHERE MonCa between T2.De and T2.A
    ...
    soit
    Table T2 :
    | de | à | remise
    |nul |10 | 5% |
    |10 |30 | 10% |

    si mon CA = 8 est ce que ma requête me renvoie 5% ?

  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
    si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    WHERE MonCa between ISNULL(T2.De, 0) AND T2.A
    ...
    soit
    Table T2 :
    | de | à | remise
    |nul |10 | 5% | => "... WHERE MonCa BETWEEN O AND 10"
    |10 |30 | 10% |

    si CA = 8 alors la requête renvoie 5% (a priori).
    Peux-tu tester et me confirmer ça ?
    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 expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Citation Envoyé par MITCH31
    si T2.De est null, comment lui attribuer la valeur 0
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE 	(T1.prix*T1.Qte) Between coalesce (T2.De, 0) and T2.A;
    Mais il ne me semble pas que cela doive changer qquechose que 'De' soit null ou zéro.
    Est-ce que as fait le test ?

    A +

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Points : 49
    Points
    49
    Par défaut RESOLU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    WHERE MonCA Between TO_NUMBER(T2.de) and TO_NUMBER(T2.A)
    ...
    Si valeur Nulle (T2.de) ma requête considère la valeur à 0 : donc ça marche avec çà !!!

    IsNull(T2.de) ne fonctionne pas ! je suis sous Oracle 9 peut être que ... je vais voir çà sur les tutoriels.
    Merci.

  7. #7
    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 TheLeadingEdge
    Mais il ne me semble pas que cela doive changer qquechose que 'De' soit null ou zéro.
    Est-ce que as fait le test ?
    Je l'ai fait et non ça ne marche pas (en tout cas sur une base IB 6).
    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

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Sous ORACLE : NVL(T2.DE, 0), etc.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Citation Envoyé par Magnus
    Citation Envoyé par TheLeadingEdge
    Mais il ne me semble pas que cela doive changer qquechose que 'De' soit null ou zéro.
    Est-ce que as fait le test ?
    Je l'ai fait et non ça ne marche pas (en tout cas sur une base IB 6).
    A ma grande honte tu as raison. Et ça ne marche pas non plus avec DB2 et Oracle! J'aurais pourtant parié le contraire...

  10. #10
    Membre habitué Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Points : 171
    Points
    171
    Par défaut
    si T2.De est null, comment lui attribuer la valeur 0
    Sous DB2 il existe la fonction IFNULL( expression , valeur si null).

    Donc, dans ton cas, IFNULL(T2.De,0) te donneras 0.

    Espérant que ça va t'aider.

  11. #11
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    MITCH31 est sous ORACLE : NVL(T2.De, 0)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2011, 10h17
  2. [XL-2003] Insérer la valeur d'une cellule dans une phrase d'une autre
    Par DonaldTron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2009, 19h50
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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