2009-03-18 42 views
34

Tôi đang cố truy xuất tổng số tất cả các giá trị duy nhất trong một trường.CodeIgniter: Cách Thực hiện Truy vấn MySQL (Tên riêng biệt) Truy vấn MySQL

Ví dụ SQL:

SELECT count(distinct accessid) FROM (`accesslog`) WHERE record = '123' 

Làm thế nào tôi có thể làm điều này loại truy vấn bên trong CodeIgniter?

Tôi biết tôi có thể sử dụng $this->db->query() và viết truy vấn SQL của riêng mình, nhưng tôi có các yêu cầu khác mà tôi muốn sử dụng $this->db->where() cho. Nếu tôi sử dụng ->query() mặc dù tôi phải tự viết toàn bộ truy vấn.

Trả lời

78
$record = '123'; 

$this->db->distinct(); 

$this->db->select('accessid'); 

$this->db->where('record', $record); 

$query = $this->db->get('accesslog'); 

sau đó

$query->num_rows(); 

nên đi một chặng đường dài về phía nó.

8

thử nó ra với đoạn mã sau

function fun1() 
{ 
    $this->db->select('count(DISTINCT(accessid))'); 
    $this->db->from('accesslog'); 
    $this->db->where('record =','123'); 
    $query=$this->db->get(); 
    return $query->num_rows(); 
} 
7

Bạn cũng có thể chạy -> chọn ('DISTINCT' field`', FALSE) và tham số thứ hai nói với CI không thoát khỏi số đầu tiên. Với tham số thứ hai đầu ra sẽ là SELECT DISTINCT 'field` thay vì không có tham số thứ hai, CHỌN' DISTINCT` 'field`

+0

câu trả lời tốt nhất – shox

Các vấn đề liên quan