[英]codeigniter select distinct function not working
我有一個具有這種結構的表:
意見編號,作者編號,標題,內容
我想從表中獲取所有最新記錄,一個給作者的記錄,這意味着每個作者的最新記錄...
我獨特的功能似乎無法正常工作...
function getOpinions() {
$data = array();
$this->db->select('*');
$this->db->from('opinions');
$this->db->join('authors', 'opinions.author_id = authors.author_id');
$this->db->order_by('date', 'desc');
$this->db->distinct('author_id');
$Q = $this->db->get();
if ($Q->num_rows() > 0) {
foreach($Q->result_array() as $row) {
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
在Codeigniter中,distinc不能按您期望的字段名稱那樣工作。 如果您查看該手冊 ,則沒有論點。 如果您查看代碼,則只需要一個布爾值,默認為true。 它只是將DISTINCT
關鍵字添加到查詢中SELECT
關鍵字之后。 而已。
在您的情況下,我認為最好使用GROUP BY
如$this->db->group_by('opinions.author_id');
希望在這種情況下可以通過在分組之前進行訂購來按您的需要進行訂購。
干杯!
編輯 -OP評論后更新
我知道排序可能會搞亂-我有點提到它了:)無論如何,我可能在這里假設您的某些表結構,但這將迫使GROUP BY
選擇頂部的行。 我認為日期在opinions
表上,並且您只希望其中包含作者詳細信息的最新行。
SELECT * FROM `authors`
JOIN (
SELECT * FROM opinions
ORDER BY `date` DESC
) AS ops ON ops.author_id = authors.author_id
GROUP BY ops.author_id
但是,您將無法在活動記錄上構造此查詢。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.