<div dir="ltr"><div><div><div>Hi,<br><br></div>The problematic query I have is:<br><br>In [9]: count(k for k in Keyword if count(k.users) > 0 and k.scheduled < datetime.date.today())<br>SELECT COUNT(*)<br>FROM "keyword" "k"<br>  LEFT JOIN "keyword_user" "t-1"<br>    ON "k"."id" = "t-1"."keyword"<br>WHERE "k"."scheduled" < %(p1)s<br>GROUP BY "k"."id"<br>HAVING COUNT(DISTINCT "t-1"."user") > 0<br>{'p1':datetime.date(2015, 5, 19)}<br><br></div>It is always only returning one result, I think because of the distinct.<br><br></div>On the other hand, this query works fine:<br><div><br>In [3]: count(k for k in Keyword if count(u for u in k.users) > 0 and k.scheduled < datetime.date.today())<br>GET CONNECTION FROM THE LOCAL POOL<br>SWITCH TO AUTOCOMMIT MODE<br>SELECT COUNT(*)<br>FROM "keyword" "k"<br>WHERE (<br>    SELECT COUNT(DISTINCT "t-1"."user")<br>    FROM "keyword_user" "t-1"<br>    WHERE "k"."id" = "t-1"."keyword"<br>    ) > 0<br>  AND "k"."scheduled" < %(p1)s<br>{'p1':datetime.date(2015, 5, 19)}<br><br></div><div>Why do these generate different SQL?<br><br></div><div>Thanks<br clear="all"></div><div><div><div><div><div><br>-- <br><div class="gmail_signature">Regards,<br><br>Matthew Bell<br></div>
</div></div></div></div></div></div>