2012-03-17 61 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