表user
左結合表personal_record
次に表activity
を結合します。codeigniter onとの組み合わせ
user
テーブル:ID ...
personal_record
テーブル:user.id、activity.id、CONFIRM_TIME ...
activity
:ID、時間、delete_time ...
注:時間はこの活動に費やされた時間を意味し、8など。
user
の前にpersonal_record
を入力すると、persanoal_record
の行の一部は、personal_record
としてフィルタリングする必要があり、confirm_timeが設定されている場合にのみ有効です。 personal_reocrd
にはactivity_id、activity
のみが含まれています。アクティビティには、人が費やす合計(時間)に参加する必要があります。
アクティビティは、activity.delete_time
列を更新することによって削除されます。
ここに私のコードです。 (ほぼ解決)
更新:($は、レコードの範囲をフィルタリングするdata_begin)
$result = $this->db->select('user.*, ifnull(sum(ac.time), 0) as time')
->from('user')
->join('(select * from personal_record where personal_record.confirm_time is not null) as pr','user.id = pr.person', 'left')
->join('(select * from activity where activity.delete_time is null and activity.create_time >"'.$date_begin.'")as ac','ac.id = pr.activity', 'left')
->group_by('user.id')
->order_by('time', 'desc')
->get()
->result();
削除条件と、次のように条件ににそれを追加します - >( '活動'、 '活動に参加します。 id = personal_record.activityとactivity.delete_time = NULL '、' left '、false)@teek – JYoThI
あなたはこの質問を調べてください。 [例](https://stackoverflow.com/questions/11056303/combining-mysql-and-or-queries-in-codeigniter) –