0

だから私はこのクエリを得ました:

    $CI->db->where('user_id', $CI->session->userdata('user_id'));
    $CI->db->where('amount >', 0);
    $CI->db->order_by('ur_time', 'desc');
    $CI->db->group_by('resource_id');
    $query = $CI->db->get('users_resources');
    $resources = $query->result();

私の問題は次のとおりです。 order_by 'ur_time' は実際には機能しません。金額が 10000 で ur_time が 1384303464 の行と、金額が 100 で ur_time が 1384304656 の行の 2 つの行を取得した場合でも、結果として金額が 10000 の行が取得されます。

私は何を間違っていますか?

EDIT:少し説明する必要があるかもしれません。いくつかの行があるとしましょう:

ur_id | ur_time     | user_id | resource_id | amount

1     | 1384304656  | 1       | 1           | 100
2     | 1384303464  | 1       | 1           | 10000
3     | 1384303464  | 1       | 2           | 200
4     | 1384304656  | 1       | 2           | 20000

ここで得たい結果: ur_id が 1 の行と ur_id が 4 の行の 2 つの行。私はそれが今明確であることを願っています。

PS: 負の金額が存在する可能性があるため、 amount > 0 句が必要ですが、結果には含めたくないのです。

4

1 に答える 1

3

これをクエリに追加してみて、選択ステートメントで結合されるかどうかを確認してください

$CI->db->select('*');
$CI->db->select_max('ur_time' , 'max_ur_time'); // this will produce max(ur_time) as max_ur_time
$CI->db->where('user_id', $CI->session->userdata('user_id'));
$CI->db->where('amount >', 0);
$CI->db->order_by('ur_time', 'desc');
$CI->db->group_by('resource_id');
$query = $CI->db->get('users_resources');
$resources = $query->result();
于 2013-11-13T02:36:28.690 に答える