繁体   English   中英

从一个表中选择计数,另一个表中有一个位置

[英]Select count from a table with a Where on another table

我有两张桌子

  • oc2_visits(字段:id_ad)
  • oc2_ads(字段:已发布)

我需要通过对id_ad进行分组来计算访问次数,这是可行的,但我还需要在25天前发布前9个结果。

这是我目前的查询:

SELECT count(v.id_ad) AS visits,
       v.id_ad,
       a.published
FROM oc2_visits AS v,
     oc2_ads AS a
WHERE DATE(a.published) >= DATE_SUB(NOW(), INTERVAL 25 DAY)
GROUP BY v.id_ad
ORDER BY visits DESC LIMIT 0,9

但是当我尝试在phpmyadmin中输入查询时,它崩溃了。

我究竟做错了什么?

问题的根源大概是两个表之间的笛卡尔积。 简单规则:请勿在from子句中使用逗号。 始终使用显式join语法。

我想象您想要的查询看起来像这样:

SELECT count(v.id_ad) AS visits, v.id_ad, a.published
FROM oc2_visits v join
     oc2_ads a
     ON v.id_ad = a.id_ad
WHERE DATE(a.published) >= DATE_SUB(NOW(), INTERVAL 25 DAY)
GROUP BY v.id_ad
ORDER BY visits DESC
LIMIT 0, 9;

我想你忘记了解析DATE_SUB(NOW(), INTERVAL 25 DAY)DATE ,同时与日期比较。 希望它能工作。

SELECT count(v.id_ad) AS visits,
       v.id_ad,
       a.published
FROM oc2_visits AS v,
     oc2_ads AS a
WHERE DATE(a.published) >= DATE(DATE_SUB(NOW(), INTERVAL 25 DAY))
GROUP BY v.id_ad
ORDER BY visits DESC LIMIT 0,9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM