Mysql Left Join DataTable Serveride Codeigniter

0

Можете ли вы мне помочь?

Нет использованных таблиц

SELECT * ORDER BY id asc LIMIT 0

Это мой код sql на модели

private function _get_datatables_query()
{

    $this->db->query("SELECT mainproduk.id,
    mainproduk.barcode as barcod,
    mainproduk.nama_produk,
    mainproduk.nama_alias,
    mainproduk.satuan,
    mainproduk.produk_jadi,
    mainproduk.kemasan,
    mainproduk.min_stok_kemasan,
    mainproduk.status,
    mainproduk.top_item,
    mainproduk.tipe_produk,
    mainproduk.nomor_kemtan,
    coalesce(sum(R.jumlah_pc),0) as omzet
    FROM mainproduk
    LEFT JOIN
    (
        SELECT id,barcode, jumlah_pc
        FROM rincian_order WHERE tipe='po' AND status!='canceled' AND tanggal_kirim BETWEEN '$kemarins' AND '$blnkemarin'
    ) AS R
        ON mainproduk.barcode = R.barcode WHERE status=1 GROUP BY mainproduk.id ORDER BY mainproduk.id ASC");


    $i = 0;

    foreach ($this->column_search as $item) // loop column 
    {
        if($_POST['search']['value']) // if datatable send POST for search
        {

            if($i===0) // first loop
            {
                $this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
                $this->db->like($item, $_POST['search']['value']);
            }
            else
            {
                $this->db->or_like($item, $_POST['search']['value']);
            }

            if(count($this->column_search) - 1 == $i) //last loop
                $this->db->group_end(); //close bracket
        }
        $i++;
    }

    if(isset($_POST['order'])) // here order processing
    {
        $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
    } 
    else if(isset($this->order))
    {
        $order = $this->order;
        $this->db->order_by(key($order), $order[key($order)]);
    }
}

Когда я использую описанный выше метод, не будет видно, что проблема с таблицей не используется, потому что запись отключена.

то я изменяю его с активной записью, как показано ниже, и появляется ошибка, которая кажется, что "COALESCE" не поддерживает в таком формате, тогда, если "coalesce (sum (details_order.jumlah_pc), 0) как omzet" Я удалю, появится ошибка как ниже

private function _get_datatables_query()
{

    $this->db->select('mainproduk.barcode as barcod, mainproduk.nama_produk, mainproduk.nama_alias, mainproduk.satuan, mainproduk.produk_jadi, mainproduk.kemasan, mainproduk.min_stok_kemasan, mainproduk.status, mainproduk.top_item, mainproduk.tipe_produk, mainproduk.nomor_kemtan, coalesce(sum(rincian_order.jumlah_pc),0) as omzet')
        ->from('mainproduk')
        ->join('rincian_order', 'mainproduk.barcode = rincian_order.barcode', 'left')
        ->where('mainproduk.status =', 1)
        ->group_by('mainproduk.id')
        ->order_by('mainproduk.id', 'ASC');     

    $i = 0;

    foreach ($this->column_search as $item) // loop column 
    {
        if($_POST['search']['value']) // if datatable send POST for search
        {

            if($i===0) // first loop
            {
                $this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
                $this->db->like($item, $_POST['search']['value']);
            }
            else
            {
                $this->db->or_like($item, $_POST['search']['value']);
            }

            if(count($this->column_search) - 1 == $i) //last loop
                $this->db->group_end(); //close bracket
        }
        $i++;
    }

    if(isset($_POST['order'])) // here order processing
    {
        $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
    } 
    else if(isset($this->order))
    {
        $order = $this->order;
        $this->db->order_by(key($order), $order[key($order)]);
    }
}

Столбец 'id' в порядке заказа неоднозначен

Пожалуйста помоги

  • 0
    Я не вижу здесь никакой двусмысленности
  • 0
    моя проблема была решена, но была другая проблема, с которой я столкнулся, и я снова спросил с новым вопросом
Теги:
codeigniter
datatable
left-join

1 ответ

0
'mainproduk.id' 
'mainproduk.barcode'

аналогично другим полям, попробуйте написать это как ваш синтаксис.

если это не работает, можете ли вы распечатать запрос?

  • 0
    моя проблема была решена, но была другая проблема, с которой я столкнулся, и я снова спросил с новым вопросом
  • 0
    Хорошо, продолжай

Ещё вопросы

Сообщество Overcoder
Наверх
Меню