【发布时间】:2010-02-19 15:32:42
【问题描述】:
我们有一个简单的数据库。 User 表保存用户。 Accounts 表为每个用户保存多个帐户。主题表包含每个帐户的多个主题。
因此,一个用户将有多个帐户,每个帐户将有多个主题。那么,如果我有一个 id=1 的用户,我如何有效地查询所有 3 个表以获取该用户的所有帐户和主题?
我目前正在使用运行许多 sql 查询的 foreach 循环。有没有办法只运行一个 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;
【问题讨论】:
-
您在寻找 SQL 连接吗?还是使用 codeignitor 的更优雅的 PHP 语法?
-
应该在 SQL 端多做一些,这是数据问题而不是 UI 问题。
-
如果其中一个帐户还没有任何主题怎么办?你还不想找回那个账号吗?条款也是如此。如果一个主题没有任何条款怎么办?是否仍要检索主题?也许这些情况是不可能的,但如果是,它们就是重要的细节。
-
@chris - 那么你会使用左连接
标签: php sql codeigniter