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

Développement SQL Server Discussion :

Requete petite probleme de comprehension


Sujet :

Développement SQL Server

  1. #1
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut Requete petite probleme de comprehension
    J'ai 3 tables :

    ap_PARTENERI (nomme par moi tab1 -champ Nume) -contient les noms des
    partenaires
    ap_PARTENERI_ADRESE(champ Telefon) - contient l'addresse numero de telephone de partenaire
    ap_PARTENERI_ADRESECONTACT(champ Localitate) contient les addrese de contact mais seulement le champ Localite m'interesse.

    Je veux lister tous les numeros de telephone pour tous les partenaires du departament (residence) Prahova ou Buzau.(c'est le champ Localitate qui represent la localite).


    Voila la requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT tab1.Nume,tab2.Telefon,tab3.Localitate
    FROM ap_PARTENERI tab1,ap_PARTENERI_ADRESECONTACT tab2,ap_PARTENERI_ADRESE tab3
    WHERE tab3.Localitate= 'Bucuresti' AND tab3.Localitate = 'Buzau'
    Effet de la requete:



    Il vous semble correctement fait?

    Je ne recois aucun erreur mais meme si j'ai Prahova comme ligne dans mon tableau tab3 aucun resultat n'est affiche.
    Mais il sont affiche seulement les 3 colonnes que je desire:

    Nume,Telefon et Localitate

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Il faudra poster entièrement vos DDL de table.
    Ce qui suit ne sont que des suppositions :

    En admettant que vous ayez une clé primaire sur votre table ap_PARTENERI nommé partner_id...

    Je suppose que chaque contact n'a pas forcement un numéro de téléphone.

    Dans ce cas là utilisez jointures externes. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    DECLARE @ap_PARTENERI TABLE
    (
     partner_id INT NOT NULL,
     Nume VARCHAR(50) NOT NULL
    );
     
    DECLARE @ap_PARTENERI_ADRESECONTACT TABLE
    (
     partner_id INT NOT NULL,
     Telefon VARCHAR(50) NOT NULL
    );
     
    DECLARE @ap_PARTENERI_ADRESE TABLE
    (
     partner_id INT NOT NULL,
     Localitate VARCHAR(50) NOT NULL
    );
     
    INSERT @ap_PARTENERI VALUES (1,'toto');
    INSERT @ap_PARTENERI VALUES (2,'tata');
     
    INSERT @ap_PARTENERI_ADRESECONTACT VALUES (1,'0123456789');
     
    INSERT @ap_PARTENERI_ADRESE VALUES (1,'Bucuresti');
    INSERT @ap_PARTENERI_ADRESE VALUES (1,'Buzau');
    INSERT @ap_PARTENERI_ADRESE VALUES (2,'Bucuresti');
     
    SELECT 
    	tab1.Nume,
    	tab2.Telefon,
    	tab3.Localitate
    FROM @ap_PARTENERI tab1
    LEFT JOIN @ap_PARTENERI_ADRESECONTACT tab2
    ON tab1.partner_id = tab2.partner_id
    LEFT JOIN @ap_PARTENERI_ADRESE tab3
    ON tab1.partner_id = tab3.partner_id
    WHERE tab3.Localitate= 'Bucuresti' 
     OR tab3.Localitate = 'Buzau'
     
    --Nume     Telefon       Localite
    ----------------------------------------
    --toto	  0123456789	Bucuresti
    --toto	  0123456789	Buzau
    --tata	  NULL          Bucuresti
    ++

  3. #3
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Merci en fait je ne devais pas utiliser l'operateur OR mais AND.

    En fait j'ai resolu mon probleme merci pour l'idee!


    Voila maintenant ca marche comme je veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT 
    	tab1.Nume,
    	tab2.Telefon,
    	tab3.Localitate
    FROM ap_PARTENERI tab1
    LEFT JOIN ap_PARTENERI_ADRESECONTACT tab2
    ON tab1.IdPartener = tab2.IdPartener
    LEFT JOIN ap_PARTENERI_ADRESE tab3
    ON tab3.IdPartener = tab1.IdPartener
    WHERE tab3.Localitate= 'Prahova' 
     AND tab3.Localitate = 'Buzau'

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/07/2010, 16h35
  2. Requete petite probleme de syntaxe
    Par mihaispr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/11/2009, 13h08
  3. Requete petite probleme
    Par mihaispr dans le forum Développement
    Réponses: 1
    Dernier message: 19/10/2009, 16h45
  4. Requete petite probleme
    Par mihaispr dans le forum Développement
    Réponses: 3
    Dernier message: 19/10/2009, 13h49
  5. petit probleme de comprehension
    Par Nyxemis dans le forum Débuter
    Réponses: 4
    Dernier message: 25/08/2008, 23h14

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