请有人帮我解答一下(我认为)应该是一个相当直截了当的问题,但我已经把头发扯了好几个小时了。
我有两张桌子,“列表”和“查询”。
我想返回一组列表以及他们收到的查询的数量,例如。
清单1(5个查询)
清单2(3个查询)
清单7(2查询)
到目前为止,我有:

SELECT l.listing_id, COUNT(e.enquiry_id) AS num_enquiries
FROM listings AS l LEFT JOIN enquiries AS e ON l.listing_id = e.enquiry_itemid
WHERE e.enquiry_itemtype='listing' AND enquiry_datesent >= '2011-01-1 0:01' AND enquiry_datesent <= '2011-12-31 23:59'
HAVING num_enquiries > 0
ORDER BY listing_title_e

但这只返回一个列表行,包含所有查询的总数,例如。
清单1(10个查询)
如您所见,查询通过itemtype'listing'和itemid匹配listingid与列表相关联。
有人能帮我吗?非常感谢!

最佳答案

SELECT l.listing_id, COUNT(e.enquiry_id) AS num_enquiries
FROM listings AS l JOIN enquiries AS e ON l.listing_id = e.enquiry_itemid AND    e.enquiry_itemtype='listing' AND enquiry_datesent >= '2011-01-1 0:01' AND enquiry_datesent <= '2011-12-31 23:59'
GROUP BY l.listing_id
ORDER BY listing_title_e

你忘记了分组-所以你得到了所有查询的数量,以及为什么使用left-join使num_enquiries>0-join会做同样的事情。调查的条件在某种程度上看起来更好

关于mysql - 子查询的“计数”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6410811/

10-13 08:48
查看更多