我下面有两个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);
但是它只会打印出一条记录,并且那里有不止一条记录......任何人都知道这个问题吗?
答案 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);