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 :

jonction de tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Par défaut jonction de tables
    Bonjour , j'ai un problème , je souhaite faire que une injection , mais , j'arrive pas a tout extraire en 1 fois , il a toujours un nom que j'arrive pas a avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT `date`,`sujet`,`message`,`de`,`pour` FROM `mail` WHERE `id_message`='1' and (`pour`='1' or `de`='1')
    Ceci me permet d'avoir la date , le sujet , le message et l'identifiant de l'émetteur et du destinataire .

    Donc , je peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT mail.date,mail.sujet,mail.message,mail.de,mail.pour,stat.nom 
    FROM `mail`,`stat` 
    WHERE mail.id_message='2' and  (mail.de='5' or mail.pour='5')and mail.de=stat.id_client
    Je peux donc virer mail.de , car je n'ai pas besoin de cette information .

    Mon problème , comment sortir le nom de pour ? ( sans devoir passer par le php , et faire un autre select .. )

    Merci d'avance

    -------------------------------
    EDIT

    Pour faire simple :

    J'ai 2 tables :

    Mail :
    id_message / pour(identifiant) / de(identifiant) / date/ sujet/ message

    et

    stat

    id_client / nom ................................


    Donc , avec l'id_message , je veux avoir le nom de la personne qui a envoyer le message / et le destinataire .

    and (mail.de='5' or mail.pour='5') sert seulement pour être sur que s'est le destinataire ou la personne qui as envoyer le message ..... ( on ne souhaite pas que une tierce personne puisse voir le message de monsieur X ... )

  2. #2
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    1°) quel sgbd ?
    2°) j'ai pas tout compris, en 1 phrase, c'est quoi le problème ?
    on peut avoir un exemple du résultat attendu versus ce que tu obtiens ?

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Par défaut
    Je travaille sur PHPmyadmin .

    J'ai 2 tables

    client

    id_client | nom | ..............................

    et

    mail

    id_message | pour | de | date | sujet | message

    garce a id_message et (mail.de='5' OR mail.pour='5') [ pour vérifier que le mail nous ait bien destinée ]

    je souhaite avoir les nom de 'de' et de 'pour' qui se situe dans la table client .

    Malheureusement , je dois le faire en 2 fois :

    $sql="SELECT mail.date,mail.sujet,mail.message,stat.nom,mail.pour FROM `mail`,`stat` WHERE mail.id_message='$id_message' and (mail.de='$id_client' or mail.pour='$id_client') and mail.de=stat.id_client";

    $sql="select `nom` from `stat` where `id_client`='$pour'";

    Se que j'aurai voulu , s'est de réussir avec 1 seule requête ...

    J'espère que j'ai répondu a ta question ... Merci d'avance pour ton aide ...

  4. #4
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    un truc comme ça, ça irait ?

    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
    SELECT 
    m.date,
    m.sujet,
    m.message,
    s.nom,
    m.pour,
    c1.nom,
    c2.nom 
    FROM mail as m
    inner join stat as s
                 on m.de=s.id_client
    inner join client as c1
                 on c1.client_id = m.de
    inner join client as c2
                 on c2.client_id = m.pour
    WHERE m.id_message=12
    and (m.de=1 or m.pour=1)

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Par défaut
    Merci , j'ai compris ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT `id_message`,`date`,`sujet`,`message`,`lu`,s1.nom,s2.nom FROM `mail` 
     
     
    INNER JOIN stat AS s1 
          ON s1.id_client=mail.de
    INNER JOIN stat AS s2 
          ON s2.id_client=mail.pour
     
    WHERE `id_message`='1' AND (`pour`='6' OR `de`='6')
    Pas mal les AS et INNER JOIN je note ...

    Merci beaucoup a toi ... Mon code seras un peu plus optimisé ...

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

Discussions similaires

  1. Problème de jonction de tables
    Par vanouuu dans le forum Modélisation
    Réponses: 1
    Dernier message: 08/05/2009, 08h40
  2. Pbm selection distinct avec jonction de table
    Par BernardT dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/07/2007, 11h05
  3. Réponses: 4
    Dernier message: 25/04/2007, 17h45
  4. [Conception]MAJ de Tables de Jonction
    Par DEGE-Nancy dans le forum Modélisation
    Réponses: 2
    Dernier message: 19/04/2007, 20h57
  5. Table de jonction , relation n:n
    Par Equus dans le forum SQL
    Réponses: 7
    Dernier message: 04/10/2004, 18h11

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