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

Requêtes MySQL Discussion :

Une petite facile. ou pas !


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Par défaut Une petite facile. ou pas !
    Bonjour à tous,

    J'ai besoin d'effectuer une requète qui me parait assez simple, mais pour laquelle je ne connais pas la méthodologie à suivre.

    • L'environnement:


    TBL_TRAVAUX (liste des intervention d'un service)
    id_tvx,
    demandeur(=id_utilisateur de la personne qui demande le travail),
    ... (= et pleins d'autres champs)

    TBL_UTILISATEURS (liste des utilisateurs du système)
    id_utilisateur,
    ...

    TBL_DESTINATAIRES (table d'association pour avoir la liste des destinataires d'un travail)
    id_tvx,
    id_utilisateur

    • Ma demande:


    Maintenant je voudrais une requête qui me retourne:
    La liste des travaux pour lesquels le demandeur n'est pas dans la liste des destinataire.

    • La preuve que j'ai cherché un peu :

    Voici une mauvaise piste (c ma requête, et elle ne me renvoie pas ce que je veux ;-) ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  id_tvx FROM `TBL_TRAVAUX` T
    INNER JOIN `TBL_DESTINATAIRES` D on T.id_tvx = D.id_tvx
    WHERE demandeur NOT IN
     (SELECT id_utilisateur FROM TBL_DESTINATAIRES WHERE id_tvx = id_tvx)
    Pour moi, mon problème viens du id_tvx = id_tvx, est ce qu'une boucle est obligatoire ... ?

    Dans l'autre sens, voici la requête qui me donne tous les travaux pour le quel le demandeur est également destinataire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DISTINCT id_tvx 
    FROM `TBL_TRAVAUX` T
    LEFT OUTER JOIN DESTINATAIRE D ON T.id_tvx = D.id_tvx
    WHERE demandeur = id_user
    D'avance merci à ceux qui me liront, et grand merci à ceux qui me répondront.

  2. #2
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Essaye la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM tbl_travaux
    INNER JOIN tbl_utilisateur ON tbl_travaux.id_utilisateur = tbl_utilisateur.id_utilisateur
    LEFT JOIN tbl_destinataire ON tbl_travaux.id_tvx = tbl_destinataire.id_tvx AND tbl_travaux.id_utilisateur = tbl_utilisateur.id_utilisateur
    WHERE tbl_travaux.id_utilisateur IS NULL

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Par défaut
    J'ai traduit ta réponse pour mon cas concret, et j'ai modifié la table de la clause "WHERE"
    Mais en tous cas le résultat est là, la requête est désormais correcte et fonctionne.
    Je me pencherais un peu plus sur les LEFT JOIN la prochaine fois, je ne savais pas les utiliser comme ça.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    SELECT *
    FROM TBL_TRAVAUX T
    INNER JOIN TBL_UTILISATEUR U ON T.demandeur = U.id_utilisateur
    LEFT JOIN TBL_DESTINATAIRE D ON T.work_code = D.work_code AND T.demandeur = D.id_utilisateur
    WHERE D.id_utilisateur IS NULL ORDER BY B.work_code
    Merci pour ta réponse
    Tu peux ajouter une croix sur la coque ton zinc

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/11/2007, 14h14
  2. Réponses: 1
    Dernier message: 26/09/2007, 22h22
  3. [procédure PG] Une erreur mystérieuse...ou pas
    Par doohan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/07/2003, 17h16
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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