2014-10-27 74 views
0

我一直在爲連接表生成SQL語句。Codeigniter加入4表

基本上我有4張桌子。並且有兩個帶外鍵的表。表序列連接到產品表和區域表。分配表連接到序列表。

表產品。

id |產品_desc

表區域。

id | region_desc

表序列。

id | product_id | region_id

表格分佈

id | sequence_id |銷售| distribution_fee

我的標準守則:

$this->db->select('*'); 
$this->db->from('distributions'); 
$this->db->join('sequence', 'sequence.id = distributions.sequence_id', 'left'); 
$this->db->join('sequence', 'sequence.product_id=products.product_no'); //Generates Error 
$this->db->join('sequence', 'sequence.region_id=regions.id'); // Generates Error 
$this->db->order_by('distributions.id','asc');   
$query = $this->db->get(); 
if($query->num_rows() != 0){ 
    return $query->result_array(); 
} else {  
    return false; 
} 

任何解決方案?這將是高度讚賞。

在此先感謝。

+0

你不加入產品或區域表,但你引用他們 – 2014-10-27 10:24:10

+0

你是什麼引用它們的意思嗎?序列表是在一個區域內交付的產品序列。 – 2014-10-27 10:26:45

+0

不好寫回復 – 2014-10-27 10:28:01

回答

0

你不是引用regionsproducts

嘗試是這樣的:

$this->db->select('*'); 
$this->db->from('distributions'); 
$this->db->join('sequence', 'sequence.id = distributions.sequence_id', 'left'); 
$this->db->join('products', 'sequence.product_id=products.product_no'); 
$this->db->join('regions', 'sequence.region_id=regions.id'); 
$this->db->order_by('distributions.id','asc');   
$query = $this->db->get(); 
if($query->num_rows() != 0){ 
    return $query->result_array(); 
} else {  
    return false; 
} 
+0

哦哇!我從來沒有想過會那麼簡單!大聲笑 。它按我的預期工作!謝謝! – 2014-10-27 10:34:08

+0

非常感謝!你救了我! – 2014-10-27 10:34:42

+0

@JeffreyBugahod沒問題。當您進行連接時,您引用的所有表必須位於查詢中 – 2014-10-27 10:34:42