У нас есть простая база данных.Таблица User содержит пользователей.Таблица Accounts содержит несколько учетных записей для каждого пользователя.Таблица «Темы» содержит несколько тем для каждой учетной записи.
Таким образом, у пользователя будет несколько учетных записей, а у каждой учетной записи будет несколько тем.Итак, если у меня есть пользователь с id = 1, как мне эффективно запросить все 3 таблицы, чтобы получить все учетные записи и темы для этого пользователя?
В настоящее время я использую циклы foreach, которые выполняют много SQL-запросов.Есть ли способ просто запустить один SQL-запрос, чтобы получить то, что я хочу ??
Вот код, который я в настоящее время использую (который является кодом CodeIgniter):
$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;