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 :

Requete complexe à écrire


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut Requete complexe à écrire
    Bonjour

    j'ai sous la main 2 requetes

    Requete1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TEL FROM Contacts WHERE ID_client=5000 AND role=1
    Requete2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NUMTEL FROM ADRESSES where ID_client=5000
    En réalite, je veux que Requete2:
    - retourne vide si le résultat retourné par Requete1 n'est pas vide
    - retourne son résultat sinon


    j'ai essayé avec des Case When.. des WHERE NOT EXISTS, mais j'y arrive toujours pas
    si qqn a une idée je suis preneur
    merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Cette requête devrait retourner ce que tu attends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NUMTEL FROM ADRESSES where ID_client=5000
    AND NOT EXISTS (SELECT TEL FROM Contacts WHERE ID_client=5000 AND role=1)

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    non
    j'ai déja essayé et ca ne me retourne rien alors qu'elle devrait!!

    la meilleure slution que j'ai pour le moment est celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (SELECT TEL FROM Contacts WHERE ID_client=5000 AND role=1) 
    union
    select NUMTEL as R from ADRESSES where ID_client=5000 and 
    (SELECT count(* ) FROM Contacts WHERE ID_client=5000 AND role=1 AND TEL is not null) <> 1
    le problème c'est que ca me retourne 2lignes dont une vide

    on peut la virer??

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    C'est bon j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT NUMTEL AS R FROM ADRESSES WHERE ID_CLIENT=5000 AND (SELECT COUNT(*) FROM CONTACTS WHERE ID_CLIENT=5000 AND ROLE=1 AND TEL IS NOT NULL) <> 1
    Merci qd meme

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Cette requête devrait te donner le même résultat avec de meilleures performances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  adr.numtel 
    FROM    adresses AS adr 
    WHERE   adr.id_client = 5000
        AND NOT EXISTS 
            (   SELECT  tel 
                FROM    contacts AS cnt 
                WHERE   adr.id_client = cnt.id_client 
                    AND cnt.role = 1 
                    AND cnt.tel IS NOT NULL
            )
    ;
    PS : Veille à la mise en forme de ton code ; il n'en sera que plus lisible et maintenable

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

Discussions similaires

  1. Aide requete complexe
    Par Sabine78 dans le forum Access
    Réponses: 9
    Dernier message: 18/04/2006, 21h28
  2. requete complexe
    Par nicohugo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/03/2006, 08h10
  3. Requete complexe
    Par d1g-2-d1g dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/05/2005, 14h47
  4. Requete complexe
    Par Pfeffer dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/02/2005, 17h42
  5. requete complexe
    Par Thunder_nico dans le forum Langage SQL
    Réponses: 8
    Dernier message: 07/10/2004, 11h36

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