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 :

Exclure des champs à zéro


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Exclure des champs à zéro
    Bonjour,
    J'ai une requête sur une table de fait avec plusieurs jointures sur des tables de référentiel qui me renvoie x lignes dont certaines ont tous leurs champs égaux à la valeur 0.
    Je souhaiterais exclure de mon résultat ces faits et ne conserver que ceux pour lesquels il y a au moins un des champs différent de 0.

    J'ai essayé la fonction MINUS

    avec requête

    minus

    requête
    and champ1=0 and champ2=0 and champ3=0 etc ...

    avez-vous une solution ?
    merci de votre aide

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    WHERE
    	Colonne1 <> 0
    	OR Colonne2 <> 0
    	OR Colonne3 <> 0
    	...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci aieeeuuuuu

    mais la requête s'avère très longue en éxécution.
    il n'y a pas moyen de la découper afin d'optimiser les performances ?

    Merci par avance

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    En l'absence de la DDL de ta table, des index dont elle dispose et de la requete que tu as écrite, je t'ai proposé une solution "générique"

    Avec plus d'informations, on pourrait effectivement prévoir quelque chose de plus optimisé...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    OK ça me semble compliqué de te donner tout le détail.
    Peux-tu me dire si la 1ère solution envisagée te paraît correcte ?
    merci encore pour ton aide

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par fbtur Voir le message
    OK ça me semble compliqué de te donner tout le détail.
    Pourquoi ça ?

    Donne nous le résultat de SHOW CREATE TABLE la_table sur chaque table concernée par la requête.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Pourquoi ça ?

    Donne nous le résultat de SHOW CREATE TABLE la_table sur chaque table concernée par la requête.
    oui, et surtout la requete en elle même (pour pouvoir l'optimiser, c'est mieux de l'avoir !)

    ...
    car j'ai lancé
    Code ??? : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requête and champ1=0 and champ2=0 and champ3=0

    sur mon système, il me dit qu'il y a une erreur de syntaxe

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    on peut aussi utiliser un UNION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT ...
    ..
    WHERE Col1 <> 0
    UNION
    SELECT ...
    ..
    WHERE Col2 <> 0
    SELECT ...
    ..
    WHERE Col3 <> 0
    mais s'il n'y a pas d'index ...
    Merci d'ajouter un sur les tags qui vous ont aidé

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Attention, il ne s'agit pas ici de vérifier une égalité, mais une inégalité !

    une série d'union sera donc sans doute contre-performant : une ligne n'aura aucune valeur à 0 sera candidate à toutes les requêtes, et devra être dédoublée ensuite !

    Enfin comme tu dis, s'il n'y a pas d'index de toute façon...

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Attention, il ne s'agit pas ici de vérifier une égalité, mais une inégalité !

    une série d'union sera donc sans doute contre-performant : une ligne n'aura aucune valeur à 0 sera candidate à toutes les requêtes, et devra être dédoublée ensuite !

    comme quoi il vaut mieux reflechir 2 fois avant d'ecrire quoique ce soit


    mais un peu plus d'infos seraient le bienvenu...
    Merci d'ajouter un sur les tags qui vous ont aidé

Discussions similaires

  1. [LG]Vision des champs d'un objet
    Par YéTeeh dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2003, 21h20
  2. [SQL] Compter des champs indépendement l'un de l'autre
    Par rippey dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 29/10/2003, 15h35
  3. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09
  4. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53
  5. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48

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