![](/img/trans.png)
[英]How can we count the number of active records using a specific id in codeigniter?
[英]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.