我希望我能打破一些功能并且不断跳过运行多个查询。
现在,如果我在两个表之间有一对多关系。
tbl_invoices
和tbl_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
答案 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);