Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete avec resultat manquant

Sujet résolu
    20 mars 2011 à 22:03:34

    Bonsoir à tous,

    ça fait pas mal de temps que je n'ai plus mis la tête dans les requêtes SQL, et il s'avère qu'une requête me pose quelques problèmes. En effet, je fais une requête sur plusieurs champs, dont certains peuvent être vide dans un premier temps, si ces champs sont vides ma requête ne me retourne rien du tout.
    Par exemple, je fais la liste d'un certains nombre de date à laquelle les membres diront si ils y participent, qu'ils y seront peut être, ou pas du tout. Mais dans le cas où la personne n'a pas encore répondu, il n'y a rien a récupéré dans la table caps_presence, mais les dates elles devraient quand même s'affiche mais ça ne fonctionne pas.

    Je vous donne la requête qui me pose problème :

    SELECT calendrier_id, DATE_FORMAT(calendrier_date,'%d-%m-%Y') AS date, calendrier_type, calendrier_libelle, calendrier_lieu, presence_membre, presence_calendrier, presence_statut
    FROM `caps_calendrier` c, `caps_presence` p, `caps_membre` m
    WHERE c.calendrier_id = p.presence_calendrier
    AND m.membre_id = p.presence_membre
    AND m.membre_id = '1'
    AND calendrier_date >= '2011-03-20'
    ORDER BY `calendrier_date` ASC
    


    Je ne sais pas si j'ai été assez clair, mais si besoin, je suis disponible à vous éclaircir comme je le pourrais.
    Merci pour votre future aide.

    Bonne soirée.
    Florian

    • Partager sur Facebook
    • Partager sur Twitter
      20 mars 2011 à 22:20:40

      Au lieu de faire des jointures avec la vieille syntaxe, utilise
      JOIN table ON ...

      Suffirait sans doute d'un LEFT JOIN pour résoudre ton problème.
      • Partager sur Facebook
      • Partager sur Twitter
        21 mars 2011 à 0:26:31

        Citation

        ok merci, problème résolu.

        Pour ceux que ça peut éventuellement intéressé, j'ai mis la requête qui fonctionne ci-dessous.

        SELECT calendrier_id, DATE_FORMAT(calendrier_date,'%d-%m-%Y') AS date, calendrier_type, calendrier_libelle, calendrier_lieu, presence_membre, presence_calendrier, presence_statut
        FROM caps_calendrier
        LEFT JOIN caps_presence ON calendrier_id = presence_calendrier
        LEFT JOIN caps_membre ON membre_id = presence_membre
        WHERE calendrier_date >= '".$today."'
        ORDER BY `calendrier_date` ASC
        



        Bonne nuit.
        Florian



        Finalement c'est pas résolu car quand j'ajoute l'id du membre ça ne fonctionne plus. Les membres ayant mis leur présence auront pas de problème alors que ceux qui n'auront encire rien fait ne verront rien à l'écran..

        SELECT calendrier_id, DATE_FORMAT(calendrier_date,'%d-%m-%Y') AS date, calendrier_type, calendrier_libelle, calendrier_lieu, presence_membre, presence_calendrier, presence_statut
        FROM caps_calendrier
        LEFT JOIN caps_presence ON calendrier_id = presence_calendrier
        LEFT JOIN caps_membre ON membre_id = presence_membre
        WHERE calendrier_date >= '".$today."'
        AND membre_id = '".$_SESSION['id']."'
        ORDER BY `calendrier_date` ASC
        


        Je ne vois pas comment faire..
        Merci pour votre aide.

        Florian.
        • Partager sur Facebook
        • Partager sur Twitter
          21 mars 2011 à 7:50:40

          Si j'ai bien compris, mets le AND membre_id = ... dans le ON du LEFT JOIN caps_membre
          • Partager sur Facebook
          • Partager sur Twitter

          requete avec resultat manquant

          × 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