2012-12-03 56 views
0

使用Active Record類的多個表中的數據我想了解如何提取從多個表中的數據,並把它們放在一個變量,並將其退回到我的控制器。你如何從笨

我可以從一個單一的表中獲取的信息是這樣的:

  $this->db->select('first_name, last_name'); 
      $this->db->from('people'); 
      $this->db->where('first_name', $firstname); 
      $this->db->where('last_name', $lastname); 
      $result = $this->db->get(); 

,但我很困惑,我怎麼可以從另一個表中獲取數據,並與其他變量保持更多的用戶輸入的匹配。

我讀過的活動記錄文件的CI網站上,但我發現的唯一的事情,可能是什麼我要找的是連接()查詢,但我不如何使用它,示例不利於網站上,因爲我不明白這一點:

$this->db->join('comments', 'comments.id = blogs.id'); 

是「意見」是什麼意思表「意見」?如果您將變量與comments.id進行比較,您是否需要在單引號之外包含變量:'comments.id =' $blogid

或者,我可以做到這一點:從一個表查詢,並把這些結果在一個變量,如下所示:

$result1 = $this->db->get(); 

,然後再從另一個表做另一個查詢,並把在

$result2 

然後我可以這樣說:$query = $result1 + $result2;

這可能嗎?

如果有人能請確認這些信息/幫助我,我將不勝感激。由於

+2

我建議你閱讀SQL連接。這裏有一個很好的文章,讓您開始:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – xbonez

+0

感謝我讀它,它似乎加入是不是有什麼我在尋找,因爲我並不需要從兩個不同的表比較值,我只是想從不同表中的列名獲得不同的值,並把它們放到一個變量,即$結果 – a7omiton

+0

@ AZ1你能舉的例子當你說你想把兩列合併成一列時,你期待什麼? – peacemaker

回答

4

如果您正在使用的活動記錄有麻煩加入可以以這種方式使用簡單的MySQL查詢:

$query_str = "SELECT user.*,role.* FROM user ,role where role.id = user.role_id and user.username = ? AND user.password = ?"; 
$result = $this->db->query($query_str,array($username,$password)); 

您的代碼: $this->db->join('comments', 'comments.id = blogs.id');說,從評論和博客表取數據,其中的意見表ID是等於博客表ID。

我上面的查詢也有效記錄將是:

$this->db->select('user.*,role.*') 
    $this->db->from('user'); 
    $this->db->where('user.username', $username); 
    $this->db->where('user.password', $password); 
    $this->db->join('role','role.id = user.role_id') 
    $result = $this->db->get(); 

您需要確保兩個表是相關的。

+0

does $ this-> db-> select('user。*,role。*')是否意味着從用戶和角色表中選擇全部? – a7omiton

+0

@ AZ1是的,你說得對。 –

+0

但是如果我想選擇不同表格中存在的不同數據段呢?即名字和姓氏出現在用戶表中,並且年齡和性別出現在另一個表格中。我將如何獲得與用戶輸入內容相匹配的數據? – a7omiton

1

我纔有機會實現它的另一種方式,

$this->db->select('a.*,b.course_name'); 
$this->db->from('fees_master a,course_master b'); 
$this->db->where('a.course_id = b.course_id',NULL,FALSE); 
$query = $this->db->get(); 
return $query->result_array(); 

我想這和它的工作,我希望這可以幫助別人。