【问题标题】:Combining 2 sql queries in codeigniter在codeigniter中结合2个sql查询
【发布时间】:2015-08-04 07:25:44
【问题描述】:

我有两张桌子。 voting_ipcountry。我想从country 表中检索结果,其中voting_ip 表的open_id_fk (外键) 等于@987654328 的open_id(主键) @ 桌子。如何编写 sql 查询来组合这些查询并返回结果。我在我的 codeigniter 模型中使用下面的代码来检索 open_id_fkvoting_ip 表中的出现次数。

public function mostvotedans()
{
    $this->db->select('open_id_fk, COUNT(*) as total');
    $this->db->group_by('open_id_fk'); 
    $this->db->order_by('total', 'desc'); 
    $query = $this->db->get('voting_ip', 5);
    return $query;

    $query = $this->db->query("SELECT * FROM country WHERE open_id_fk=open_id;");  
    return $query;         
}

【问题讨论】:

标签: php mysql sql codeigniter model-view-controller


【解决方案1】:

如下修改。

  public function mostvotedans()
{
  $this->db->select('c.open_id,COUNT(ip.open_id_fk) as total')->from('voting_ip ip');
  $this->db->join('country c','c.open_id=ip.open_id_fk');
  $this->db->group_by('ip.open_id_fk'); 
  $this->db->order_by('total', 'desc'); 
  $this->db->limit(5);
 $query = $this->db->get();
 return $query;


}

【讨论】:

  • 谢谢你.. 这工作:) 太棒了.. 我只是修改它以获取所有列.. $this->db->select('c.*,COUNT(ip.open_id_fk ) as total')->from('voting_ip ip');
【解决方案2】:

使用连接语句:

$query = $this->db->select('v.open_id_fk, COUNT(v.*) AS total, c.country_name')
            ->join('country AS c', 'c.open_id = v.open_id_fk')
            ->from('voting_ip AS v')
            ->group_by('v.open_id_fk')
            ->order_by('total', 'DESC')
            ->limit(5);

应该可以,我输入了“country_name”,因为我不知道你的表格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多