Php 从表A中选择所有元素,按表B中链接到每个项目的条目数排序

Php 从表A中选择所有元素,按表B中链接到每个项目的条目数排序,php,mysql,Php,Mysql,我有一个带有书签的表,lz_链接,还有一个存储每次点击链接的表,名为lz_点击。然后,我想显示所有的书签,按他们在上周收到的点击次数排序 这是我目前的疑问: SELECT count(hit_time) as cnt, descr, l_id, url FROM lz_link LEFT JOIN lz_hits ON hit_lz=l_id WHERE link_aktiv=1 && hit_time >= '.(time()-Options::$most_hits_

我有一个带有书签的表,
lz_链接
,还有一个存储每次点击链接的表,名为
lz_点击
。然后,我想显示所有的书签,按他们在上周收到的点击次数排序

这是我目前的疑问:

SELECT count(hit_time) as cnt, descr, l_id, url
FROM lz_link
LEFT JOIN lz_hits ON hit_lz=l_id
WHERE link_aktiv=1
  && hit_time >= '.(time()-Options::$most_hits_hit_days*3600*24).'
GROUP BY hit_lz
ORDER BY cnt DESC
LIMIT '.Options::$boxes_count.';
它可以工作,但我只得到一个书签,在给定的时间段内访问了零次。未访问的任何其他书签都不会显示

为什么会发生这种情况


如何获取所有书签,即使它们在给定时间段内未被访问?

将适用于lz_点击的任何条件从WHERE子句移动到ON子句。 抱歉,我无法发布查询-我使用的是移动设备

编辑:也许这有帮助

SELECT count(hit_time) as cnt, descr, l_id, url
FROM lz_link
LEFT JOIN lz_hits ON hit_lz=l_id 
   AND hit_time >= '.(time()-Options::$most_hits_hit_days*3600*24).'
WHERE link_aktiv=1
GROUP BY hit_lz
ORDER BY cnt DESC
LIMIT '.Options::$boxes_count.';
假设link_active和hit_lz来自表lz_link。如果link\u未处于活动状态,只需将其移动到ON子句,就像我对hit\u time所做的那样。
至于hit_lz,由左连接的列进行分组没有多大意义。考虑使用另一列进行分组。 编写的查询不明确。通常在使用GROUP BY时,在SELECT列表中包含GROUP BY子句中未包含的非聚合字段是错误的。MySQL显然允许这样做,但结果被认为是不明确的。我不能完全确定哪些字段在哪些表中,但这个查询可能会给出所需的结果。我猜
l_id
lz_链接中
hit_lz
lz_链接中

SELECT count(hit_lz) as cnt, descr, l_id, url
    FROM lz_link
       LEFT JOIN lz_hits ON hit_lz=l_id
          AND hit_time >= '.(time()-Options::$most_hits_hit_days*3600*24).'
    WHERE link_aktiv=1
    GROUP BY l_id, descr, url
    ORDER BY cnt DESC

您是否在php中检查了
(time()-Options:$most\u hits\u hit\u days*3600*24)
的值?