Как получить последние записи каждого bank_id в объединении - PullRequest
0 голосов
/ 08 октября 2019

Я использую Codeigniter, у меня запрос, который не работает. У меня есть 3 таблицы, которые называются tbl_lead, tbl_bankdata, tbl_payment_invoice. Нет проблем с объединением двух таблиц. Я получаю проблему в таблице tbl_payment_invoice.

. Проблема в том, что я добавляю статус платежа в таблицу tbl_payment_invoice. Это может быть несколько статусов bank_id.

Мне нужно отобразить последний статус пользователя из tbl_payment_invoice.

структура таблицы tbl_payment_invoice

p_i_id | payment_invoice|payment_invoice_date |bank_id |payment_invoice_by
1      | 1              | 2019-09-29 20:39:12 |33      |1
2      | 2              | 2019-09-29 20:39:43 |33      |1
3      | 1              | 2019-09-29 20:40:02 |05      |1
4      | 1              | 2019-09-29 20:45:12 |20      |1
5      | 2              | 2019-09-29 20:50:38 |05      |1
6      | 2              | 2019-09-29 21:10:12 |20      |1
7      | 1              | 2019-09-29 21:15:40 |10      |1

Моя ожидаемаяиз этой таблицы выводится

p_i_id | payment_invoice|payment_invoice_date |bank_id |payment_invoice_by
2      | 2              | 2019-09-29 20:39:43 |33      |1
5      | 2              | 2019-09-29 20:50:38 |05      |1
6      | 2              | 2019-09-29 21:10:12 |20      |1
7      | 1              | 2019-09-29 21:15:40 |10      |1

Мне нужно отобразить последние записи bank_id.

Не могли бы вы помочь мне с использованием соединения?

public function disbursed_Leadlist(){
if($this->session->userdata['login_session']['access_role']==5){
   $or_where="tbl_bankdata.b_filestatus=1  AND createby='".$this->session->userdata['login_session']['id']."'"; 
}
else{
    $or_where="tbl_bankdata.b_filestatus=1";
}

$result = $this->db->select('*')
                  ->from('tbl_lead')
                  ->join('tbl_bankdata','tbl_lead.c_id=tbl_bankdata.lead_id','LEFT')
                  ->join('tbl_payment_invoice','tbl_bankdata.bank_id=tbl_payment_invoice.bank_id','LEFT')
                  ->where($or_where)
                  ->order_by('tbl_lead.date_of_created','DESC')
                  ->get()
                  ->result();
                       // echo $this->db->last_query();
                  return $result;
  }

Ответы [ 4 ]

0 голосов
/ 12 октября 2019

Попробуйте

1002 *
0 голосов
/ 09 октября 2019

-> соединение ('(выберите bank_id, max (payment_invoice), max (payment_invoice_date)) как дату, добавленную из группы tbl_payment_invoice по bank_id) как p_i', 'tbl_bankdata.bank_id = p_i.bank_id', 'LEFT').

Измените значение max (payment_invoice) на payment_invoice, где запрос должен быть p_i.payment_invoice = '', поскольку вы создаете временную таблицу p_i из своего подзапроса.

0 голосов
/ 09 октября 2019

Вы меняете имя таблицы и попробуйте этот код ......

$paidrefid = $CI->session->userdata('login_data');

    $CI->db->select('*');
    $CI->db->from('tbl_refrralcash a');
    $CI->db->join('tbl_cashback_ReqJoint b','b.cashbackID = a.id', 'left');
    $CI->db->join('tbl_cashback_request c','c.id = b.cashback_RequestID', 'left');
    $CI->db->where('a.cash_referralid',$paidrefid);
    $CI->db->where('a.paid_status','1');
    $CI->db->where('c.status','0');
    $CI->db->where('b.type','2');
    $query = $CI->db->get();
    $Reqreferal = $query->result_array(); 
0 голосов
/ 08 октября 2019

Я изменяю max (payment_invoice) на max (payment_invoice) как payment_invoice , я думаю, что это скручивание послужит ..

$result = $this->db->select('*')
        ->from('tbl_lead')
        ->join('tbl_bankdata','tbl_lead.c_id=tbl_bankdata.lead_id','LEFT')
        ->join('tbl_bankname','tbl_bankname.b_id=tbl_bankdata.b_bankname')
        ->join('(select bank_id, max(payment_invoice) as payment_invoice, max(payment_invoice_date) as dateofadded from tbl_payment_invoice group by bank_id) as p_i','tbl_bankdata.bank_id=p_i.bank_id','LEFT')
        ->where($or_where)
        ->order_by('tbl_lead.date_of_created','DESC')
        ->get()
        ->result();

        print_r($result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...