小编典典

Codeigniter-活动记录-SQL-复杂联接

sql

我有一个从表中检索所有标签的函数:

function global_popular_tags() {
    $this->db->select('tags.*, COUNT(tags.id) AS count');
    $this->db->from('tags');
    $this->db->join('tags_to_work', 'tags.id = tags_to_work.tag_id');
    $this->db->group_by('tags.id');
    $this->db->order_by('count', 'desc'); 
    $query = $this->db->get()->result_array();
    return $query;
}

我还有另一个表叫做“工作”。“工作”表的“草稿”列值为1或0。我希望COUNT(tags.id)考虑使用特定标签的工作是否处于草稿模式(1)。

假设有10幅带有“设计”标签的作品。COUNT将为10。但是这些工作中有2个处于草稿模式,因此COUNT应该确实是8。我该如何管理它?


阅读 180

收藏
2021-04-22

共1个答案

小编典典

尝试更改:

$this->db->from('tags');
$this->db->join('tags_to_work', 'tags.id = tags_to_work.tag_id');

到:

$this->db->from('tags, work');
$this->db->join('tags_to_work', 'tags.id=tags_to_work.tag_id AND work.id=tags_to_work.work_id');

并添加:

$this->db->where('work.drafts', 0);
2021-04-22