2013-11-24 31 views
1

我需要从同一时间请求记录,但不知道如何将它们彼此分开以使它们不合并。如何多次加入同一张表以检索不同的结果

有一个表categoriesCID柱代表组件ID分出类别:

id cid  title 
1 1  News 
2 1  Events 

3 2  Users 
4 2  Administrators 

5 3  Guests 
6 3  Registered 

,这里是一个components表:

id title 
1 Content 
2 Members 
3 Access level 

我需要检索结果从数据库,所以我可以打印这些变量在我的content_list_view.php

<?php foreach($results as $item):?> 
    ID: <?php echo $item->id;?> <br/> 
    Title: <?php echo $item->title;?> <br/> 
    Category: <?php echo $item->category;?> <br/> 
    Access: <?php echo $item->access;?> <br/> 
<?php endforeach;?> 

使用CodeIgniter的ActiveRecords,我做一个查询中content_model.php

public function get_content_list(){ 

    $this->db 
     ->select(' 
      content.id, 
      content.title, 
      categories.title AS category, 
      categories.title AS access 
     ') 
     ->join('categories', 'content.catid = categories.id') 
     ->join('categories AS alvl', 'content.alvl = alvl.id'); 

    $query = $this->db->get($this->_table_name); 

    if($query->num_rows() > 0) 
     return $query->result(); 
    else 
     return FALSE; 

} 

毕竟,这是我在我的观点得到,类别访问是相同的。访问应注册

ID: 1 
Title: Some article test news 
Category: News 
Access: News 

任何意见如何联接表时的记录分开?

回答

1

的问题是向选择,因为你不分配alvl,它从categories 尝试始终以改变这种:

$this->db 
     ->select(' 
      content.id, 
      content.title, 
      categories.title AS category, 
      categories.title AS access 
     ') 
     ->join('categories', 'content.catid = categories.id') 
     ->join('categories AS alvl', 'content.alvl = alvl.id'); 

这样:

$this->db 
     ->select(' 
      content.id, 
      content.title, 
      categories.title AS category, 
      alvl.title AS access 
     ') 
     ->join('categories', 'content.catid = categories.id') 
     ->join('categories AS alvl', 'content.alvl = alvl.id'); 
+0

哇!我甚至不知道我可以这样做。谢谢了很多Alessandro – aspirinemaga

+0

很高兴帮助你,我正在通过这个问题,并且第一次不太清楚如何去做@aspirinemaga –