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 :

Croisement de table


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut Croisement de table
    Bonjour,

    J'ai 2 tables nommées T1 et T2.
    Voici leur structure simplifiée:
    T1 contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Id
    Nom
    Prénom
    Adresse
    T2 contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Id
    Nom
    Prénom
    Affectations
    Date
    Je souhaite croiser les 2 tables.
    Pour cela, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM T1, T2
    WHERE T1.Id = T2.Id AND T1 
    AND T1.Nom = T2.Nom
    AND T1.Prénom = T2.Prénom
    Or, les personnes de T1 n'ayant pas d'enregistrement dans T2 n'apparaissent pas dans ma liste.

    Comment modifier ma requête pour que ma liste soit complète?

    Merci
    Xavier

  2. #2
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Le soucis de l'absence de données provient de votre jointure. Pour en apprendre un peu plus je vous conseil le blog de SQLpro sur cette notion primordiale en base de données.

    http://sqlpro.developpez.com/cours/sqlaz/jointures/

    Pour votre demande, il suffit donc de faire une jointure gauche sur votre table.


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T1.*, T2.*
      FROM T1
           LEFT JOIN T2 ON T1.Id = T2.Id AND T1 
                       AND T1.Nom = T2.Nom
                       AND T1.Prénom = T2.Prénom;

    Je pense qu'il est inutile de placer les nom et prénoms dans la jointure. Simplement parce que la seule chose qui garantie l'intégrité référentielle, c'est l'identifiant. Après, je ne connais pas le besoin complet et la requête est peut-être justifiée ainsi.

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Merci pour cette réponse et pour le lien.

    Je vais essayer d'appliquer ça.

    Bonne soirée,
    Xavier

  4. #4
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Bonjour,

    Je reviens sur ce sujet.
    La requête ne me renvoie pas d'erreur, mais lorsque je rajoute une clause where pour filtrer mes lignes, je récupère bien les enregistrements de t1, mais pas de t2...
    Xavier

  5. #5
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Asdorve Voir le message
    Bonjour,

    Je reviens sur ce sujet.
    La requête ne me renvoie pas d'erreur, mais lorsque je rajoute une clause where pour filtrer mes lignes, je récupère bien les enregistrements de t1, mais pas de t2...
    Sans la requête, il nous sera difficile de t'aider à corriger ton erreur

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  6. #6
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Désolé, je viens de m'apercevoir qu'il y avait une toute petite erreur de frappe.
    Donc maintenant ça fonctionne.

    Merci pour ton aide et le lien.

    A bientôt,;
    Xavier

  7. #7
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    De rien et bonne journée


    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

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

Discussions similaires

  1. Croisement de table
    Par avyperez dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/04/2013, 10h39
  2. Croisement de tables en SQL
    Par avyperez dans le forum SAS Base
    Réponses: 0
    Dernier message: 18/04/2013, 16h52
  3. Croisement de table avec exclusion
    Par daveInIreland dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/04/2007, 15h53
  4. Liste et croisement de tables (RR.champ1 RVR.champ2)
    Par yazerty dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/01/2006, 21h29
  5. Croisement d'une table avec elle même
    Par lelapin dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/09/2005, 07h44

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