簡體   English   中英

針對其他表中每個id的rown計數包含與使用活動記錄的外鍵相同的id

[英]Count number of rown against each id in other table contains the same id as foreign key using active records

我有下面兩張桌子,在這里我需要完整的機架列表,並計算與機架.id和機架ID匹配的外鍵編號,機架ID與應與機架ID匹配的機架不匹配0

語氣

function getRacksList()
    {
        $this->db->select('rack.name as name, rack.details as details, rack.id as id');
        $this->db->from('books');
        $this->db->join('rack', 'rack.id = books.rack_id', 'left');
        $query = $this->db->get();

        return $query->result();
    }
Controller
 function rackDetails(){

        $data['racks'] = $this->rack_model->getRacksList();

        print_r($data['racks']);
        die();
    }

我得到的結果

Array ( [0] => stdClass Object ( [name] => Software Engineering [details] => This Book Rack is for Software Engineering Books [id] => 1 )
 [1] => stdClass Object ( [name] => Computer Sciences [details] => This rack is for Computer Sciences Books [id] => 2 ) 
[2] => stdClass Object ( [name] => Software Engineering [details] => This Book Rack is for Software Engineering Books [id] => 1 ) 
[3] => stdClass Object ( [name] => Software Engineering [details] => This Book Rack is for Software Engineering Books [id] => 1 ) 
)

id    rack_name
1     rack one
2     rack two
3     rack three
4     rack four
5     rack five

圖書

id    book_name   rack_id
1     book one      1
2     book two      1
3     book three    2
4     book four     2
5     book five     3

如果我正確地遵循了您的要求,一種解決方案是將rack表與rack表一起LEFT JOIN books表,並使用聚合來計算每個書架中有多少書。

這是一個使用原始sql的代碼片段:

function getRacksList()
{
    $query = $this->db->query("
        SELECT rack.name, rack.details, rack.id, COUNT(books.rack_id) as books_count
        FROM rack
        LEFT JOIN books ON rack.id = books.rack_id
        GROUP BY rack.name, rack.details, rack.id
    ");
    return $query->result();
}

暫無
暫無

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

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