Php 在CI中,哪个连接适合我的Ajax数据表

Php 在CI中,哪个连接适合我的Ajax数据表,php,mysql,ajax,codeigniter,Php,Mysql,Ajax,Codeigniter,我有两张桌子,一张是“销售”,另一张是“送货”。我有一份显示所有“销售”的报告。我想做一个连接,在这个连接中,我可以获得所有未交付的销售,与deliveries表进行比较,只有在ID是唯一关键点的情况下。虽然我是CI的新开发人员,但我想知道如何做 下面是在网格中返回值的代码 function getdatatableajax() { if($this->input->get('search_term')) { $search_term = $this->i

我有两张桌子,一张是“销售”,另一张是“送货”。我有一份显示所有“销售”的报告。我想做一个连接,在这个连接中,我可以获得所有未交付的销售,与deliveries表进行比较,只有在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();

   }
函数getdatatableajax() { 如果($this->input->get('search\u term')){$search\u term=$this->input->get('search\u term');}否则{$search\u term=false;} $this->load->library('datatables'); $this->datatables ->选择(“sales.id作为sid、日期、参考号、开票人名称、客户名称、税费总额、税费总额2、总额、内部备注”) ->选择(“sales.id=deliveries.id作为sid日期、参考号、开票人名称、客户名称、总税费、总税费2、总税费、内部备注”) ->来自(“销售”); $this->datatables->add_列(“操作”, " “,“sid,内部注释”) ->取消设置列(“sid”) ->取消设置列(“内部注释”); echo$this->datatables->generate(); } 交付表包含以下文件

id日期时间参考\u无客户地址注释用户更新\u


我只想要警报代码,它将在哪里工作,只要执行联接(如果适用)。

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

//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 (  );

Ref编号通常是与销售表相比的发票编号。因此,请尝试下面的代码,它可能会提供您真正想要从DB填充的内容

   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")
            ->from('sales')
            ->join(deliveries, 'sales.reference_no = deliveries.reference_no', 'left');


            $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();

   }
函数getdatatableajax() { 如果($this->input->get('search\u term')){$search\u term=$this->input->get('search\u term');}否则{$search\u term=false;} $this->load->library('datatables'); $this->datatables ->选择(“sales.id作为sid、日期、参考号、开票人名称、客户名称、税费总额、税费总额2、总额、内部备注”) ->来自(‘销售’) ->加入(deliveries,'sales.reference_no=deliveries.reference_no','left'); $this->datatables->add_列(“操作”, " “,“sid,内部注释”) ->取消设置列(“sid”) ->取消设置列(“内部注释”); echo$this->datatables->generate(); }
试试这段代码,它应该可以工作

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, sales.date as date, sales.reference_no as reference_no, sales.biller_name as biller_name, sales.customer_name as customer_name, sales.total_tax as total_tax, sales.total_tax2 as total_tax2, sales.total as total, internal_note as sintnote")
            ->from('sales')
            ->join(deliveries, 'sales.reference_no = deliveries.reference_no', 'left');
            $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();

   }
函数getdatatableajax() { 如果($this->input->get('search\u term')){$search\u term=$this->input->get('search\u term');}否则{$search\u term=false;} $this->load->library('datatables'); $this->datatables ->选择(“sales.id作为sid,sales.date作为日期,sales.reference作为参考号,sales.biller作为名称,sales.customer作为名称,sales.total作为名称,sales.tax作为总税,sales.total作为总税,sales.total作为总税,sales.total作为总税,内部注释作为注释”) ->来自(‘销售’) ->加入(deliveries,'sales.reference_no=deliveries.reference_no','left'); $this->datatables->add_列(“操作”, " “,“sid,内部注释”) ->取消设置列(“sid”) ->取消设置列(“内部注释”); echo$this->datatables->generate(); } 我只想要警报代码,它将在哪里工作,只要做连接,如果适用的话

我不太明白这一点,但我认为您正在寻找一个显示所有尚未交付的销售的查询

要回答您的问题,左联接是合适的,因为即使在传递中找不到匹配的行,它也会返回结果集


实际上,这些查询中的任何一个都适用于您-

有人想提供一个好的答案吗?请确认此处“where”是必需的吗?@Sashi好吧,如果op希望获取所有记录,那么where就不是必需的,但因为他/她提到Id是关键,所以where子句是必需的,这就是我们如何识别sales表中的记录。选择
sales
*从sales LEFT外部联接sales.id上的交货=交货.id限制0,30
SELECT * 
FROM sales s
LEFT JOIN deliveries d ON d.id = s.id
WHERE d.id = null;