簡體   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