2015-10-10 33 views
1

我在檢索中使用笨多個表中的數據有點麻煩多個表。笨JOIN

這是我用來檢索我的模型,它運作良好數據的代碼。

function retrieve_experience($alumni_id) 
{ 
$this->db->select('*'); 
$this->db->from('experience'); 
$this->db->where('alumni_id',$alumni_id); 
$query = $this->db->get(); 
return $query; 
} 

function retrieve_education($alumni_id) 
{ 
$this->db->select('*'); 
$this->db->from('education'); 
$this->db->where('alumni_id',$alumni_id); 
$query = $this->db->get(); 
return $query; 
} 

現在我嘗試使用簡化的代碼,但未能顯示數據。這裏是在我的模型

function retrieve_all_data($alumni_id) 
{ 
$this->db->select('*'); 
$this->db->from('experience'); 
$this->db->join('education','education.alumni_id=experience.alumni_id'); 
$this->db->where('experience.alumni_id',$alumni_id); 
$query=$this->db->get(); 
return $query->result_array(); 
} 

在我的控制器的代碼,我使用這個代碼在我的模型

function display() 
{ 
$alumni_id = $this->session->userdata('alumni_id'); 
$data['all_data'] = $this->Alumni_model->retrieve_all_data($alumni_id); 
$data['main_content'] = 'alumni_home'; 
$this->load->view('includes/template', $data); 
} 

檢索數據和用於顯示我使用此代碼

foreach($all_data as $results) 
{ 
/** data from experience table **/ 
$results['company_name']; 
$results['company_address']; 
/** data from education table **/ 
$results['school_name']; 
$results['field_of_study']; 
} 

我根本不能顯示任何東西。請幫助

+0

您有任何SQL錯誤?嘗試啓用codeigniter分析器來查看您實際運行的查詢。 – pr0metheus

+0

查看'echo $ results ['company_name']; '或'<?php echo $ results ['company_name'];?>' – user4419336

+0

@ wolfgang1983是的,我用echo,仍然沒有輸出..忘了把回聲放在我的問題上。我的壞 – Chris

回答

1

嘗試下面的代碼,

我相信你會想是這樣的:

function retrieve_all_data($alumni_id) 
{ 
    $this->db->select("e.*,edu.*"); 
    $this->db->from("experience e"); 
    $this->db->join("education edu", "edu.alumni_id = e.alumni_id",'left'); 
    $this->db->where('e.alumni_id',$alumni_id); 
    $this->db->group_by('e.exp_id'); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 
+0

它只顯示1結果,而不是3當我添加 $ this-> db-> group_by('e.alumni_id'); – Chris

+0

@Chris你真的想要它嗎? – jlocker

+0

http://imgur.com/a/8aDta 我想顯示EXPERIENCE表中的所有數據WHERE alumni_id = $ alumni_id。 在我的經驗表中,有3項中alumni_id =所述第一圖像中的14 ,其顯示3個數據,(使用我的老功能 功能retrieve_experience($ alumni_id) \t { \t $這 - > DB- > select('*'); $ this-> db-> from('experience'); $ this-> db-> where('alumni_id',$ alumni_id); \t $ query = $ this-> DB-> get()方法; \t回報$查詢; \t \t} 第二圖像是我使用的代碼,輸出是第三張圖片 – Chris

1

希望下文提到的功能應該返回您預期的數據。

function retrieve_all_data($alumni_id) 
{ 
    $this->db->select('*'); 
    $this->db->from('experience ex'); 
    $this->db->join('education ed','ed.alumni_id=ex.alumni_id'); 
    $this->db->where('ex.alumni_id',$alumni_id); 
    $query=$this->db->get(); 
    return $query->result_array(); 
} 
+0

仍然沒有數據顯示。 – Chris

+0

請做一個try catch塊來查看錯誤。函數retrieve_all_data($ alumni_id) { $ this-> db-> select('*'); $ this-> db-> from('experience ex'); $ this-> db-> join('education ed','ed.alumni_id = ex.alumni_id'); $ this-> db-> where('ex.alumni_id',$ alumni_id); 嘗試{ \t $ query = $ this-> db-> get(); \t return $ query-> result_array(); }趕上(例外$ E){ \t回聲$ E->的getMessage(); \t die(); } } –

+0

我的不好。它檢索並顯示數據。但現在的問題是,顯示的數據是3圈,我不知道爲什麼。 – Chris