Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de requête sur table relationnelle

Sujet résolu
    12 novembre 2010 à 9:50:25

    Bonjour,

    je rencontre une petite difficulté concernant une requête pour afficher des événements dont l'utilisateur en cours est soit un participant, soit le créateur de l'événement.

    j'ai donc deux tables utilisées :

    * evenements : id(PRIMARY), nom, id_auteur, datedeb, datefin
    * evenements_concerne : id_evenement,id_user,presence
    NOTE : presence est un TINY INT (0:ne participe pas,1:en attente de confirmation ,2:participe)

    Je veux construire une requete qui m'affiche pour l'utilisateur X (ici : 3) pour un jour donné (ici : 2010-11-04).

    SELECT DISTINCT evenements.* FROM evenements
    LEFT JOIN evenements_concerne
    ON evenements_concerne.id_evenement=evenements.id
    WHERE
    DATE_FORMAT(evenements.datedeb,'%Y-%m-%d') <= '2010-11-04'
    AND
    DATE_FORMAT(evenements.datefin,'%Y-%m-%d') >= '2010-11-04'
    AND
    ( evenements_concerne.id_user = 3 OR evenements.id_auteur = 3 )
    ORDER BY evenements.datedeb ASC

    Mais si je rajoute : SELECT DISTINCT evenements.*,evenements_concerne.presence AS presence
    pour récupérer l'indicateur de présence à l'événement, il m'affiche plusieurs fois le même événement lorsque l'id_auteur de l'événement est 3.

    NOTE : le problème réside peut-être dans le fait que la référence à la table relationnel "evenements_concerne" n'est pas "obligatoire", dans le sens où je veux lister les événements simple (sans relation) mais dont l'id_auteur est l'utilisateur 3, et également lister les événements ou l'utilisateur 3 est participant (via evenement_concerne)

    Merci d'avance pour votre aide.

    EDIT :
    Eh bien je viens de trouver la réponse,
    en fait il fallait mettre
    ( evenements_concerne.id_user = 3 OR ( evenements_concerne.id_evenement IS NULL AND evenements.id_auteur = 3 ) )
    • Partager sur Facebook
    • Partager sur Twitter

    Problème de requête sur table relationnelle

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown