如何在特定条件下应用INNER JOIN

时间:2016-04-26 15:12:13

标签: mysql join

这是我的表存储数据的方式: enter image description here

看到我想从各个表中选择id的文本(名称)以便显示。

*忽略分类的拼写错误
在这里,我将与role_name(列)的角色表,名称(列)的分类表和名称(列)的对象表联接。

在我的上表中,有' 0' 0看到classi_id和object_id。因此,使用我的内部连接语句,它只返回两行没有' 0'值。

我想在我的查询中添加一个条件,其中只有对于没有' 0'的那些行的clasificationa和对象表上的INNER JOIN。值,但我希望返回具有各自roles.role_name,clasification.name和object.name的所有5行。

请查看我的查询:

*我正在使用数据库包装器进行此查询

$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 [Super_Admin]
 -classification.name [系统]

linkto_id [2]
 -role_name [Agency_Admin]
 -classification.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 [合同]

1 个答案:

答案 0 :(得分:1)

在2个表上添加带有0s

的条件
"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' "