簡體   English   中英

Codeigniter - 活動記錄 - sql - 復雜連接

[英]Codeigniter - Active record - sql - complex join

我有一個從表中檢索所有標簽的函數:

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;
}

我有另一張名為'work'的表。 'work'表有一個'draft'列,其值為1或0.我希望COUNT(tags.id)考慮具有特定標記的工作是否處於草稿模式(1)。

比如,有10件作品被標記為“設計”。 COUNT將是10.但是這些工作中有2個處於草稿模式,因此COUNT應該是8.如何管理?

嘗試改變:

$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);

您可以使用純sql而不是使用活動記錄類,我自己正在使用CI超過2年,並且大部分時間我避免使用活動記錄類,導致直接sql更容易調試和編寫復雜查詢。 這就是我如何使用它。

$sql = "SELECT...your sql here";
$q = $this->db->query($sql);
...
//Do something with your query here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM