我們有一個簡單的數據庫。用戶表保存用戶。帳戶表爲每個用戶保存多個帳戶。 「主題」表包含每個帳戶的多個主題。如何高效地從多個表中查詢子記錄?
因此,用戶可能有多個帳戶,每個帳戶都有多個主題。因此,如果我有一個id = 1的用戶,我如何有效地查詢所有3個表以獲取該用戶的所有帳戶和主題?
我目前正在使用運行許多sql查詢的foreach循環。有沒有辦法只運行一個SQL查詢來得到我想要的?
這裏是我目前使用的代碼(這是笨代碼):
$data=array();
$accounts=$this->db->get_where('accounts',array('user_id'=>1));
foreach ($accounts->result() as $account) {
$tmp=array();
$topics=$this->db->get_where('topics',array('account_id'=>$account->id));
foreach ($topics->result() as $topic) {
$this->db->order_by($order_by);
$terms=$this->db->get_where('terms',array('topic_id'=>$topic->id));
array_push($tmp,array('topic'=>$topic, 'terms'=>$terms->result()));
}
array_push($data,array('account'=>$account, 'topics'=>$tmp));
}
return $data;
你正在尋找一個SQL加入?或更優雅的PHP語法使用codeignitor? – 2010-02-19 15:35:01
在SQL方面應該做的更多,它的數據問題不是UI問題。 – JonH 2010-02-19 15:40:20
如果其中一個帳戶尚未有任何主題,該怎麼辦?你還是不想取回那個賬戶?條款同樣適用。如果一個主題沒有任何條款?你想要檢索該主題嗎?也許這些情況是不可能的,但如果它們是,它們是重要的細節。 – goat 2010-02-19 16:14:12