2016-04-19 11 views
0

ここは私の状況です。私は2つのテーブルを持っています。私は2つのテーブルを結合しようとしていますが、これは成功しました。今私は値を追加する必要がありますが、私は表示するときに同じユーザーを繰り返すしたくありません。codeigniterはテーブルのグルーピングと合計を助ける必要があります

例テーブル:

表1:

users 
[ id ][name ] 
[ 1 ][John Doe] 
[ 2 ][Jane Doe] 
[ 3 ][Joe Doe] 

表2:

activity_hours 
[ id ][user_id][hours] 
[ 1 ][ 1 ][ 3 ] 
[ 1 ][ 2 ][ 1 ] 
[ 1 ][ 3 ][ 4 ] 
[ 1 ][ 1 ][ 2 ] 
[ 1 ][ 2 ][ 3 ] 

私は、活動時間から各ユーザーのすべての時間を追加したいのですが、マッチさせたいです金額は

ここに私の現在のコードです: Hours_mode l.php

$this->db->select(' 
     users.id as id, 
     users.name, 
     activity_hours.hours 
    '); 

    $this->db->from('users'); 
    $this->db->join('activity_hours', 'users.id = activity_hours.user_id'); 

    $query = $this->db->get(); 
    return $query->result(); 

hours_veiw.php

foreach ($result as $activity) { 
    echo $activity->name.' : '.$activity->hours; 
} 

所望の出力:

John Doe : 5 
Jane Doe : 4 
Joe Doe : 4 

== UPDATE ==

あなたはuser3774708ありがとうございます。あなたが提供した少しだけ私は残りを解決することができました。ここ は、私が変更するために必要なコードの残りの部分である: 私は変更:

activity_hours.hours 

sum(activity_hours.hours) as hours 

最終データベースクエリに

$this->db->select(' 
    users.id as id, 
    users.name, 
    sum(activity_hours.hours) as hours 
'); 

$this->db->from('users'); 
$this->db->join('activity_hours', 'users.id = activity_hours.user_id'); 
$this->db->group_by('users.id'); 
$query = $this->db->get(); 
return $query->result(); 

答えて

2

使用GROUP_BYを

users.idに
$this->db->select(' 
    users.id as id, 
    users.name, 
    activity_hours.hours 
'); 

$this->db->from('users'); 
$this->db->join('activity_hours', 'users.id = activity_hours.user_id'); 
$this->db->group_by('users.id'); 
$query = $this->db->get(); 
return $query->result(); 
関連する問題