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 :

pb requête avec un OR


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut pb requête avec un OR
    Bonjour,
    Voici mon problème pour les bonnes âmes qui voudront bien se pencher dessus:
    J'ai une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_table (id int, nom varchar(50))
    et une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filtre(id int, OnExclut int)
    et je veux sélectionner tous les 'nom' dont 'OnExclut' vaut 0 ou alors où il n'y a pas d'entrée correspondante dans la table filtre (si pas de filtre, alors on affiche 'nom' quand même), et enfin ne pas sélectionner ceux dont 'OnExclut' vaut autre chose que 0.

    Je devrais avoir quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select mt.nom
    from ma_table mt, filtre f
    where mt.id = f.id and
             ( (f.OnExclut = 0) or ('pas de ligne correspondante à cet id') )
    Comment coder donc mon 'pas de ligne correspondante à cet id' s'il vous plaît?
    D'avance merci,
    Julien

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    il faut passer par une jointure externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ELECT mt.nom
    FROM ma_table mt 
    LEFT JOIN filtre f
    ON mt.id = f.id AND f.OnSelectionne = 1

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    Désolé en fait, le problème est inverse, la donnée que j'ai est On Exclut et non pas OnSelectionne. Du coup pas sûr que la jointure externe fonctionne de même.

  4. #4
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Toujours avec une jointure externe, en considérant que s'il n'y a pas de correspondance, on a 0 pour OnExclut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT mt.nom
    FROM ma_table mt 
    LEFT JOIN filtre f
    ON mt.id = f.id 
    WHERE COALESCE(f.OnExclut, 0) = 0
    @+

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Citation Envoyé par jmclej Voir le message
    Désolé en fait, le problème est inverse, la donnée que j'ai est On Exclut et non pas OnSelectionne. Du coup pas sûr que la jointure externe fonctionne de même.
    cela devrait fonctionner

Discussions similaires

  1. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02
  2. Requète avec NOT EXISTS
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 15h20
  3. Requête avec l'expression Like
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 02/09/2003, 09h39
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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