2012-03-17 60 views
0

好的,首先对不起,如果它是一个愚蠢的问题,但我是一个非常大的初学者。Codeigniter加入重复返回的值

我有3个数据库表,视频,事件和用户。

我的问题是,如果我加入这3个表格,并显示结果在我看来它重复。

例如,如果我在我的个人资料中回显用户名称,并且我上传了7个视频,则会显示该名称七次。

function get_profile($id) 
    { 
     $this->db->select('*'); 
     $this->db->from('pf_users'); 
     $this->db->join('pf_videos', 'pf_videos.uid = pf_users.uid'); 
     $this->db->join('pf_events', 'pf_events.uid = pf_users.uid'); 
     $this->db->where('pf_users.uid', $id); 
     $q = $this->db->get(); 
     if($q->num_rows() > 0) 
     { 
      foreach($q->result() as $row) 
      { 
       $data[] = $row; 
      } 

      return $data; 
     } 
      else 
     { 
      show_404(); 
     } 

} 

我连重复菜单

<ul class="profile_menu"> 
     <?php foreach ($results as $res): ?> 
      <li><a href="#" class="profile_info">Információ</a></li> 
      <li><a href="#" class="profile_event">Eseményei (<?php echo count($res->title) ?>)</a></li> 
      <li><a href="#" class="profile_photos">Party képei (0)</a></li> 
      <li><a href="#" class="profile_video">Videói (<?php echo count($res->url); ?></a></li> 
     <?php endforeach; ?> 

可以请人指出我缺少什么?如果它是一个愚蠢的问题,很抱歉。

谢谢

回答

1

这是正常的,你将有重复的内容,你是语句中缺少组。在你的情况,你需要添加:

$this->db->group_by("pf_users.uid"); 

现在你有两个合资pf_videos和pf_events和正常的事情是有重复的内容,您对pf_events和pf_videos双方的信息。如果你虽然不同时需要信息的简单DISTINCT将做的工作适合你,所以你可以简单地有

$this->db->select('DISTINCT pf_users.*',false); 

不使用GROUP_BY声明。要了解更多关于DISTINCT和GROUP BY您可以简单地阅读以下链接:

http://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

+0

我觉得有点傻,对斯皮林时间坦克对我的问题,并帮助我走出 – Side 2012-03-18 08:43:50

+1

不要感觉。每个人都是一次开始。对我而言,并不存在愚蠢的问题。只有“不完整”的问题。因此,当你的问题被正确地问及所需的所有信息时,就可以了 – 2012-03-19 07:49:13