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 :

Intersection entre deux tables


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 30
    Points : 24
    Points
    24
    Par défaut Intersection entre deux tables
    Bonjour,

    J'ai 2 tables A (personne) et B (affectation).
    Dans la première table A, j'ai les champs "identifiant", "nom" et "prenom".
    Dans la 2ème tabe B, j'ai les champs "identifiant", "statut", "dateArrivee" et "dateDepart".

    j'aimerais afficher un tableau dans lequel on a : "identifiant", "nom", "prenom" et "statut"

    sachant que la colonne statut doit afficher le statut actuel. S'il n'y a pas de statut elle affiche "-" .

    J'ai essayé de faire la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select distinct a.identifiant, a.nom, a.prenom, b.statut
      from A a, B b
     where a.identifiant = b.identifiant
    Mais dans ce cas j'ai plusieurs lignes pour la même personne avec ces différents statuts, alors que j'ai besoin qu'une seule ligne pour chaque personne avec son statut actuel s'il existe.

    J'ai essayé aussi la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select distinct a.identifiant, a.nom, a.prenom, b.statut
      from A a, B b
     where a.identifiant = b.identifiant
       and b.dateArrivee <= 'dateAujourdhui'
       and b.dateDepart  >= 'dateAujourdhui'
    Mais dans ce cas si une personne n'a pas de statut actuellement, il ne sera pas affiché alors que j'ai besoin de l'afficher même s'il n'a pas de statut et en mettant dans ce cas un "-" dans la colonne statut.

    Que dois-je faire ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Déjà prennez connaissance des différents type de jointure existant : http://sqlpro.developpez.com/cours/sqlaz/jointures/

    Ensuite :
    J'ai essayé de faire la requête suivante :
    select distinct a.identifiant, a.nom, a.prenom, b.statut from A a, B b where a.identifiant = b.identifiant : Mais dans ce cas j'ai plusieurs lignes pour la même personne avec ces différents statuts, alors que j'ai besoin qu'une seule ligne pour chaque personne avec son statut actuel s'il existe.
    Que veux dire statut actuel ? comment le reconnait-on ?


    Quel est votre SGBD ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Le statut actuel c'est la valeur du champs statut dans la table B avec une valeur du champs "dateArrivee" inférieur à la date d'aujourd'hui et une valeur du champs "dateDepart" supérieur à la date d'aujourd'hui.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    oki,

    Dans ce cas lisez la partie jointure externe de la doc liker au-dessus, et adaptez votre 2eme requête en conséquent.

    Si ca ne marche pas, postez votre nouvelle requête

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Effectivement, il fallait utiliser une jointure externe. Merci pour le lien.

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

Discussions similaires

  1. [SQL] Intersection entre deux tables
    Par Al3x dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/12/2007, 16h46
  2. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  3. Transfert entre deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/10/2004, 14h36
  4. [VB.NET] ComboBox lien entre deux tables
    Par VDB1 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/07/2004, 12h15
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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