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 :

Condition sur une plage de donnes pas tjs renseignée


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut Condition sur une plage de donnes pas tjs renseignée
    Bonjour,

    Je suis ennuyé, car je dois avoir des conditions sur des plages de valeur QUAND CELLES CI EXISTENT.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select ............
    from table1, table2
    where .........
    and table1.champ1 in (select xxxxxx where xxxxxxx)
    and table2.champ5 in (select yyyyyyy where yyyyyyy)
    Problème : quand la requete select yyyyyyy where yyyyyyy ne renvoie rien, meme si le premier critère select xxxxxx where xxxxxxx donnait quelque chose ça ne sort plus rien.

    Evidemment il ne s'agit pas de mettre un "or" à la place du "and" car quand les 2 conditions sont renseignées il faut vérifier les 2.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Bonjour,
    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    and (table1.champ1 in (select xxxxxx where xxxxxxx) OR table1.champ1 IS NULL)
    and (table2.champ5 in (select yyyyyyy where yyyyyyy) OR table2.champ5 IS NULL)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Non, en fait admettons j'ai 4 lignes par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    table1.champ1      table2.champ5
    null                       11
    1                          12
    2                          null
    3                          13
    Cas 1
    table1.champ1 in (1,2,3) et aucune condition sur table2.champ5
    --> je veux les lignes 2,3,4 (je ne veux pas la ligne null)

    Cas 2
    table1.champ1 in (1,2) et table2.champ5 in (12, 13)
    --> je veux la ligne 2 (je ne veux pas la ligne null)

  4. #4
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Tes cas dépendent de quoi ? On dirait que ce n'est pas toujours la même chose...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Je suis dépendant du type de catégorie qui défile à partir d'une boucle en amont. Suivant la catégorie, les select xxxxxxx et select yyyyyy ne renvoient pas toujours de données (il y a des tables de correspondance pour savoir sur quels critères filtrer).

    Enfin sauf meilleur proposition, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    and (table1.champ1 in (select xxxxxx where xxxxxxx) or select count(*) xxxxxx where xxxxxxx) = 0)
    and (table2.champ5 in (select yyyyyyy where yyyyyyy) or select count(*) yyyyyyy where yyyyyyy) = 0)

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faut publier un exemple complet, avec les scripts de création (sur un jeu de données limité en taille), comme c'est d'ailleurs stipulé dans les règles de ce forum :
    http://www.developpez.net/forums/a69...gage-sql-lire/

    Ça permet de lever beaucoup d'incertitudes même si la description fonctionnelle du besoin reste nécessaire.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Il faut publier un exemple complet, avec les scripts de création (sur un jeu de données limité en taille), comme c'est d'ailleurs stipulé dans les règles de ce forum :
    http://www.developpez.net/forums/a69...gage-sql-lire/

    Ça permet de lever beaucoup d'incertitudes même si la description fonctionnelle du besoin reste nécessaire.
    Il me semble que c'était décrit le plus simplement possible.
    Et j'ai donné un exemple en plus au 3ième post.

    Bon, je met résolu, puisque ça marche, je ne vais pas chercher plus loin.

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

Discussions similaires

  1. [XL-2000] Matrice ne reposant pas sur une plage de données
    Par xilay dans le forum Excel
    Réponses: 2
    Dernier message: 13/09/2011, 18h33
  2. generaliser une macro sur une plage de données
    Par Eausport dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/07/2011, 11h49
  3. Decode sur une plage de données
    Par gubule dans le forum SQL
    Réponses: 2
    Dernier message: 25/01/2011, 11h44
  4. Réponses: 1
    Dernier message: 23/09/2009, 04h23
  5. centrer l'affichage sur une plage de données
    Par lapa-jh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2007, 06h29

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