10/10/2018, 11:29
Vấn đề này có phải liên quan đến đệ qui k? Xin giúp đỡ...
Mình có bảng user gồm id và parent_id, username,... mỗi id sẽ có parent_id là id khác. Trong trường hợp hình trên, mình đang chạy funtion có id = 1, id 1 này có 2 con là cty1 và cty2 (cty1 và cyt2 có parent_id là 1), cty1 lại có con là cty3 (cty3 có parent_id là id của cty1), cty3 có con là cty4 (cty4 có parent_id là id của cty3)....
Giờ vấn đề là mình dùng cách gì để đếm trong hệ thống của id = 1 có bao nhiêu người, như trong hình thì mình đang chạy funtion có id = 1, vậy trong hệ thống của tôi có 7 người, xin nhờ cao thủ giúp mình cách tính ra con số 7 (số 7 chỉ là ví dụ)
Xin nhờ cao thủ trợ giúp.
Tuyển người design skin cho
Bài liên quan
@stano1: bạn có thể hướng dẫn chi tiết dùm mình k?
$query_members = $this->db->select('*')
->from('vd_members')
->where('parent_id', $user_id)
->order_by('username', 'ASC')
->get();
$members = $query_members->result();
$total_users += $query_members->num_rows();
if(!empty($members)) {
foreach($members as $member)
{
$is_parent = $this->db->select('*')
->from('vd_members')
->where('parent_id', $member->id)
->order_by('username', 'ASC')
->get()->num_rows();
$total_users += $is_parent;
if($is_parent > 0) {
$this->so_nguoi_co_trong_caycay($member->id, $total_users);
}
}
}
return $total_users;
}
trong đó level(id) = level(pid)+1, level giúp
1) hiển trị cây các id
2) khi sql thì thực hiện theo từng level
bạn cho t tự liên kết:
Giả sử level của id xuất phát là k, đặt cur_level = k-1
set cur_level = cur_level+1; SELECT ... FROM t AS t1 INNER JOIN t AS t2 ON t1.id=t2.pid WHERE t1.level = cur_level
lặp cái sql này đến khi ko còn lấy được thêm mẩu tin.