2016-04-26 34 views
0

這是我的表存儲的數據如何: enter image description here如何申請INNER JOIN ON一定條件

見,我要選擇從顯示的目的各表的ID文本(名稱)。

*忽略了clasification
這裏的拼寫錯誤我與角色表ROLE_NAME(列),
clasification表連接的名稱(列)和
對象表名(列)。

在我的上表中,classi_id和object_id都有'0'。因此,使用我的內部聯接語句,它只返回兩個不具有「0」值的行。

我想在我的查詢中放入一個條件,它只對那些沒有'0'值的行的clasificationa nd對象表進行INNER JOIN,但我希望返回所有5行並帶有各自的roles.role_name,clasification。名稱和對象。名稱。

請檢查下面我查詢:

*我使用的數據庫封裝這個查詢

$data = $this->db->select("SELECT * FROM role_linkto INNER JOIN roles ON role_linkto.role_id = roles.role_id INNER JOIN clasification ON role_linkto.classi_id = clasification.id INNER JOIN object ON role_linkto.object_id = object.id "); 

return $data; 

linkto_id 1
-role_name [超級管理員]
-classification.name [系統]

linkto_id [2]
-role_name [Agency_Admin]
-c lassification.name [機構]

linkto_id [3]
-role_name [Contract_Admin]
-classification.name [系]
-object.name [合同]

linkto_id [4]
-role_name [ Contract_Owner]
-object.name [合同]

linkto_id [5]
-role_name [供應]
-classification.name [機構]
-object.name [合同]

+0

我想你可能會尋找一個'LEFT JOIN'因爲你要保持你的所有5行應用額外的條件。你能把你想要的結果放在問題中嗎? –

+0

@NorbertvanNobelen,在我的帖子中添加了預期結果 – 112233

回答

1

待辦事項LEFT JOIN上的兩張桌子條件以0

"SELECT * FROM role_linkto INNER JOIN roles ON role_linkto.role_id = roles.role_id LEFT JOIN clasification ON role_linkto.classi_id = clasification.id AND clasification.id <> '0' LEFT JOIN object ON role_linkto.object_id = object.id AND object.id <>'0' " 
+0

感謝它按預期工作 – 112233

+0

np,請標記爲關閉問題 – guiguiblitz