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 :

left join sur sous requête [2012]


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 53
    Points
    53
    Par défaut left join sur sous requête
    Bonjour,
    petit problème qui me parait pourtant simple mais je n'arrive pas à écrire la requete :
    j'ai une table PERSONNES (champs Matricule, Nom, prénom).
    une autre table ADRESSES avec les champs Matricule (repris de la table PERSONNES), N_adresse, Rue, N_rue, Ville
    une personne peut avoir plusieurs adresses.

    je veux afficher tous les champs de la table PERSONNES ainsi que la rue et la ville de la première adresse de cette personne ayant un n° qui commence par 4....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT p.matricule, p.Nom, p.prenom, a.rue, a.ville
    FROM personnes p
    left join (select * from adresses where n_rue like '4%') a on a.matricule = p.matricule
    mais comme ça, si la personne a plusieurs adresses dont le n° commence par 4 => je sors plusieurs ligne par personne....
    j'espère avoir été claire.
    merci. bonne journée

  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,

    La première adresse... cela implique qu'il y ait un ordre dans les adresses... sur quel critère se base-t-il ?
    (à défaut de mieux, j'ai pris l'ordre alphabétique des villes dans l'exemple ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    WITH CTE AS (
        SELECT p.matricule, p.Nom, p.prenom, a.rue, a.ville, ROW_NUMBER() OVER(PARTITION BY p.matricule ORDER BY a.ville) AS RN
        FROM personnes p
        LEFT JOIN adresses AS a 
    	   ON a.matricule = p.matricule
        WHERE n_rue like '4%' 
    )
    SELECT matricule, Nom, prenom, rue, ville
    FROM CTE
    WHERE RN = 1
    ;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 64
    Points : 53
    Points
    53
    Par défaut
    Bonjour aieeeuuuuu,
    merci beaucoup, c'est exactement ce que je cherchais.
    bonne journée!

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

Discussions similaires

  1. LEFT JOIN sur sous requête
    Par DjiLow dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2018, 16h26
  2. [MySQL] Inner join sur sous requête
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/11/2010, 16h55
  3. LEFT JOIN sur 2 BDD
    Par padawa dans le forum Outils
    Réponses: 1
    Dernier message: 07/04/2007, 13h40
  4. LEFT JOIN sur sous requete
    Par passie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2006, 12h51

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