使用SQL连接从大多数记录中排序

时间:2011-01-26 08:01:15

标签: php sql mysql codeigniter sql-order-by

我下面有两个MySQL表

  

tophits
id,account,time

  

热门站点
id,姓名,电子邮件,网址

我的topsites id是1(这是我的tophits.account)。我想从topsites中选择名称和网址,并在当天帐号为1的帐户中输入COUNT个记录数。

所以他们都会回应出来,而且哪个帐号中最多的点击率都会出现在顶部等等

这是为了codeigniter,我试过..

$this->db->select('topsites.name, topsites.url, topsites.id, COUNT(tophits.account) as hit_count',FALSE);
   $this->db->from('topsites');
   $this->db->where('active', '0');
   $this->db->join('tophits', 'tophits.account = topsites.id', 'left');
   $this->db->like('tophits.time', '2011-01-25'); 
   $this->db->order_by('hit_count');
   $this->db->limit(10);

但是它只会打印出一条记录,并且那里有不止一条记录......任何人都知道这个问题吗?

3 个答案:

答案 0 :(得分:3)

你需要GROUP BY帐户(显示多个帐户),你还需要ORDER BY“desc”才能看到最多的点击

$this->db->select('topsites.name, topsites.url, topsites.id, COUNT(tophits.account) as hit_count',FALSE);
$this->db->from('topsites');
$this->db->where('active', '0');
$this->db->join('tophits', 'tophits.account = topsites.id', 'left');
$this->db->like('tophits.time', '2011-01-25'); 
$this->db->group_by('topsites.name, topsites.url, topsites.id');
$this->db->order_by('hit_count', 'desc');
$this->db->limit(10);

答案 1 :(得分:0)

添加group by

您使用aggregate函数count

答案 2 :(得分:0)

您需要在tophits表中使用group by

$this->db->select('topsites.name, topsites.url, topsites.id, COUNT(tophits.account) as hit_count',FALSE);
   $this->db->from('topsites');
   $this->db->where('active', '0');
   $this->db->join('tophits', 'tophits.account = topsites.id', 'left');
   $this->db->group_by('tophits', 'id');
   $this->db->like('tophits.time', '2011-01-25'); 
   $this->db->order_by('hit_count');
   $this->db->limit(10);