哪个连接适用于CI中的Ajax数据表

时间:2015-10-12 23:01:17

标签: php mysql ajax codeigniter

我有两张桌子,一张是'销售'另一个是交付'。我有一份报告显示所有销售情况'我想做一个加入,我可以获得与交付表相比没有交付的所有销售,只有ID是唯一的关键点。虽然我是CI的新开发人员,但我想知道如何去做。

以下是网格中返回值的代码。

function getdatatableajax()
   {
        if($this->input->get('search_term')) { $search_term = $this->input->get('search_term'); } else { $search_term = false;}

       $this->load->library('datatables');
       $this->datatables
            ->select("sales.id as sid, date, reference_no, biller_name, customer_name, total_tax, total_tax2, total, internal_note")
            ->select("sales.id = deliveries.id as sid date, reference_no, biller_name, customer_name, total_tax, total_tax2, total, internal_note")
            ->from('sales');
            $this->datatables->add_column("Actions", 
            "<center><a href='#' title='$2' class='tip' data-html='true'><i class='icon-folder-close'></i></a> <a href='#' onClick=\"MyWindow=window.open('index.php?module=sales&view=view_invoice&id=$1', 'MyWindow','toolbar=0,location=0,directories=0,status=0,menubar=yes,scrollbars=yes,resizable=yes,width=1000,height=600'); return false;\" title='".$this->lang->line("view_invoice")."' class='tip'><i class='icon-fullscreen'></i></a> 
            <a href='index.php?module=sales&view=add_delivery&id=$1' title='".$this->lang->line("add_delivery_order")."' class='tip'><i class='icon-road'></i></a>
            <a href='index.php?module=sales&view=pdf&id=$1' title='".$this->lang->line("download_pdf")."' class='tip'><i class='icon-file'></i></a> 
            <a href='index.php?module=sales&view=email_invoice&id=$1' title='".$this->lang->line("email_invoice")."' class='tip'><i class='icon-envelope'></i></a>
            </center>", "sid, internal_note")

        ->unset_column('sid')
        ->unset_column('internal_note');

       echo $this->datatables->generate();

   }

交货表位于fileds

之下

id日期时间reference_no客户地址注释用户updated_by

如果适用的话,我只想要警告代码,它只会在连接中工作。

4 个答案:

答案 0 :(得分:4)

尝试使用此代码,它应该可以正常工作。

grep

答案 1 :(得分:1)

参考编号是一般与销售表比较的发票编号。因此,请尝试下面的代码,它可能会提供您真正想要从数据库填充的内容。

WHERE

答案 2 :(得分:0)

这应该做。这是一个非常粗糙的形式,但你明白了。

//Select everything
$this->db->select (  '*'  );

//From sales
$this->db->from ( 'sales as s' );

//Where id of sales is equals to your id
$this->ci->db->where ( 's.id', $id );

//Join where id in sales is equals to id_sales in deliveries
$this->ci->db->join (  'deliveries as d', 's.id = d.id_sale' );

// Query
$query = $this->ci->db->get (  );

答案 3 :(得分:0)

  

如果适用的话,我只想要警告代码,它只会在连接中工作。

我对此并不十分了解,但我认为您正在寻找一个显示尚未交付的所有销售的查询。

要回答您的问题, LEFT JOIN 是合适的,因为即使在 deliveries 中找不到匹配的行,它也会返回结果集。

SELECT * 
FROM sales s
LEFT JOIN deliveries d ON d.id = s.id
WHERE d.id = null;

实际上,这些查询中的任何一个都适合您 - Opposite of inner join