gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:34:20 25 4
gpt4 key购买 nike

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

看到我想从相应的表中选择 id 的文本(名称)以用于显示目的。

*忽略拼写错误进行分类
这里我加入了角色名称(列)的角色表、名称(列)的
分类表和名称(列)的
对象表。

在我的上表中,classi_id 和 object_id 都显示为“0”。因此,使用我的内部连接语句它只返回两行没有“0”值。

我想在我的查询中添加一个条件,其中它仅对那些不具有“0”值的行的分类和对象表进行 INNER JOIN,但我希望返回具有各自 Role.role_name、clasification.name 的所有 5 行和对象.name。

请检查下面我的查询:

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

$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
-角色名称[ super 管理员]
-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[合约]

最佳答案

在 2 个带 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' "

关于mysql - 如何在特定条件下应用 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com