2013-04-24 136 views
0

這是一個有點難以描述,但它在這裏。Codeigniter GROUP BY和SELECT MAX

我使用codeigniter從表中選擇maintenance_jobs並加入另一個表maintenance_job_itemsmaintenance_job_items是該特定作業的更新列表。

的表如下所示

MAINTENANCE JOBS 
|-------|-----------|--------------| 
| index | job_title | date_created | 
|-------|-----------|--------------| 
MAINTENANCE_JOB_ITEMS 
|-------|-----------------------|-------------|--------------| 
| index | maintenance_job_index | description | date_updated | 
|-------|-----------------------|-------------|--------------| 

我需要能夠只從maintenance_job_items表的最新更新一起返回所有維護工作,然後用笨的活動由date_updated DESC責令其記錄。我試過group_by,select_max,order_by等,但似乎無法得到我想要的。任何幫助,將不勝感激,請只是說,如果你不明白我在問什麼,因爲我覺得有點難以解釋。

回答

0

試試這個:

$this->db->select("mj.*, mi.date_updated"); 
$this->db->from('maintenance_job as mj'); 
$this->db->join('maintenance_job_items as mi','mj.index=mi.maintenance_job_index','left'); 
$this->db->order_by('mi.date_updated'); 

嘗試//echo $this->db->last_query();檢查查詢是否正確與否。

+1

您好感謝您的答覆,我纔剛剛回到辦公室,我給那些一去,讓你知道我如何繼續。再次感謝。 – user1530205 2013-04-26 13:19:48

+0

@ user1530205有用嗎? :) – 2013-05-18 03:11:21

0

解決方法:1

$this->db->select('MAINTENANCE_JOBS.*,MAINTENANCE_JOB_ITEMS.date_updated'); 
$this->db->join('MAINTENANCE_JOBS', 'MAINTENANCE_JOBS.index = MAINTENANCE_JOB_ITEMS.index'); 
$this->db->group_by("MAINTENANCE_JOBS.index"); 
$this->db->order_by("MAINTENANCE_JOBS.date_updated", "desc"); 
$kd = $this->db->get('MAINTENANCE_JOB_ITEMS'); 
    $result_array = array(); 
    foreach ($kd->result_array() as $row) 
    { 
     $result_array[] = $row; 
    } 

echo '<pre>' 
print_r($result_array); 
echo '</pre>' 

解決方案:2

$this->db->distinct('MAINTENANCE_JOBS.*,MAINTENANCE_JOB_ITEMS.date_updated'); 
$this->db->join('MAINTENANCE_JOBS', 'MAINTENANCE_JOBS.index = MAINTENANCE_JOB_ITEMS.index'); 
$this->db->order_by("MAINTENANCE_JOBS.date_updated", "desc"); 
$kd = $this->db->get('MAINTENANCE_JOB_ITEMS'); 
    $result_array = array(); 
    foreach ($kd->result_array() as $row) 
    { 
     $result_array[] = $row; 
    } 

echo '<pre>' 
print_r($result_array); 
echo '</pre>'