Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête qui génère une ligne NULL

HAVING COUNT

Sujet résolu
    15 février 2012 à 18:45:33

    Bonsoir,

    J'écris actuellement une requête en PHP grâce à Doctrine. Voici la requête :

    <?php
    $this->createQuery('s')
        ->leftJoin('s.InscriptionsMembres i')
        ->leftJoin('s.TypesCours t')
        ->where('s.date_heure > NOW()')
        ->andWhere('s.id NOT IN (SELECT i2.seance FROM InscriptionsMembres i2 WHERE i2.membre = ?)', $id)
        ->andWhere('t.noms = \'Espoir\'')
        ->andWhere('s.responsable <> ?', $id)
        ->orderBy('s.date_heure')
        ->having('COUNT(i.membre) <= 4');
    


    Voici alors la requête SQL produite :

    SELECT
        s.id AS s__id,
        s.date_heure AS s__date_heure,
        s.commentaire AS s__commentaire,
        s.responsable AS s__responsable,
        s.type AS s__type,
        i.membre AS i__membre,
        i.seance AS i__seance,
        t.id AS t__id,
        t.noms AS t__noms
    FROM seances s
    JOIN inscriptions_membres i
        ON s.id = i.seance
    JOIN types_cours t
        ON s.type = t.id
    WHERE (
        s.date_heure > NOW()
        AND s.id NOT IN (
            SELECT i2.seance AS i2__seance
            FROM inscriptions_membres i2
            WHERE (i2.membre = 1)
        )
        AND t.noms = 'Espoir'
        AND s.responsable <> 1)
    HAVING COUNT(i.membre) <= 4
    ORDER BY s.date_heure
    


    Cette requête qui normalement n'est pas censé produise de résultat dans MySQL me produit une ligne dans laquelle tous les champs du SELECT sont à NULL.

    Lorsque j'enlève la clause HAVING, ce "bug" disparait.

    Je ne comprends pas trop l'origine de cette ligne. Comment faire pour garder la clause HAVING sans conserver cette ligne de NULL ?

    Merci d'avance pour votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2012 à 18:34:16

      Dans MySQL, un count() sans GROUP BY retourne une seule ligne, ta requête ne risque pas de produire les résultats que tu attends...
      • Partager sur Facebook
      • Partager sur Twitter

      Requête qui génère une ligne NULL

      × 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