Codeigniter从另一个表中选择SELECT作为数组

时间:2015-10-02 09:59:57

标签: php mysql codeigniter

我希望我能打破一些功能并且不断跳过运行多个查询。

现在,如果我在两个表之间有一对多关系。 tbl_invoicestbl_invoice_items。对于特定订单,表tbl_invoice_items的每个项目都有不同的行。

使用Codeigniter的SINGLE查询是否可以从同一结果中的tbl_invoices和数组中的所有tbl_invoice_items获取项目?

基本上加入以下查询

$this->db->select('*,tbl_invoices.id AS invoice_id');
$this->db->from('tbl_invoices');
$this->db->where('tbl_invoices.id',$invoice_id);
$data = $this->db->get();


$this->db->select('*');
$this->db->from('tbl_invoice_items');
$this->db->where('tbl_invoice_items.invoice_id',$invoice_id);
$this->db->join('tbl_products','tbl_products.id = tbl_invoice_items.item_id','left');
$data = $this->db->get();

它是否能够在一对一关系表中将另一个表作为自定义变量返回? 就像是: SELECT tbl_clients.* AS client, tbl_invoices.* FROM...JOIN...WHERE...etc

1 个答案:

答案 0 :(得分:0)

解决方案是一个3表sql join(回答你的主要问题)这是应该回答你的主要问题的SQL查询

$queryStr = sprintf("SELECT * from tbl_invoices a 
    INNER JOIN tbl_invoice_items b using a.id = b.invoice_id
    INNER JOIN tbl_products c using c.id = b.item_id 
    WHERE a.id = '%s' ", $invoice_id);

$query = $this->db->query($queryStr);