mysql - 将 2 个表连接在一起并使用基于单独 mysql 查询的 where 函数
问题描述
我正在搭建一个工作培训平台。我已经根据赋予他们的角色为用户创建了接受培训的要求。如果该角色与文档对齐,它将与用户相对。我已经设法完成了大部分工作,但我正在努力寻找在 mysqli 中完成 where 语句的最佳方法。
tbldocfiles 是我的文件列表。我正在查看 docid(可能是与文档关联的多个文件) tbltrainingaccess 设置角色(驱动程序、仓库管理员、客户服务)并显示与 docfiles 中的文档关联的角色(通过 id)。tblusertraining 是用户列表以及他们与他们关联的角色。(司机,仓库管理员,客户服务)。
我列出了与用户关联的文档,因此认为以下是最好的方法:
- 查看用户以及他/她分配了多少个角色
- 查看第 1 点返回的角色(where 函数)
- 识别并匹配与用户具有相同角色的文档(Join 功能)
- 创建列表,然后查看 docid 的唯一值。(不同的价值)
示例用户 Bri 具有司机和仓库管理员角色。db 中有 5 个文档,其中 3 个与司机角色(docid 1,2,3)相关联,其中 2 个与仓库管理员角色(docid 2,4)相关联,第 5 个文档与客户服务相关联。
我的查询应该这样做:
列出与角色关联的所有文档,这些文档与用户 Bri 1 2 3 2 4 现在从上面的列表中选择唯一值(使用 docid):1,2,3,4。所以我的答案将在最后使用 mysql_fetch_rows 用作计数函数
SELECT DISTINCT tbldocfiles.docid FROM tbldocfiles LEFT JOIN tbltrainingaccess ON (tbldocfiles.docid = tbltrainingaccess.docid) where groupid='1' or groupid='9'
上面的代码有效。但我让自己感到困惑。
where 语句需要是类似于以下查询的结果: select * from tblusertrainingrole where userid='1' (1 将是基于页面选择的变量)
结果将是 1, 9,它们是 groupid 结果。
基本上任何帮助将不胜感激!我相信这会很简单,但我已经为此筋疲力尽了一段时间,这里的大多数答案都有助于加入,但不是 where 语句(我可以找到) 提前谢谢大家!
解决方案
您可以在 where 中执行 select 语句。由于它是一个 or 语句,因此您可以将其用于结果。请将 * 替换为您需要的值的列名。应该看起来像
where groupid in (select * from tblusertrainingrole where userid = '1')
推荐阅读
- python - 不和谐机器人的命令不起作用(Python)
- php - 如果传递null,则php函数获取默认值
- javascript - 如何使用javascript插入和获取动态创建的输入字段的值?
- spring-cloud-stream - Spring 云流消息传递。消息为空
- encryption - Python AES 解密初始化向量和键值大小问题
- python - 我在第 20 行出现错误“TypeError: 'float' object is not subscriptable”
- python - 圆形列表、列表列表、numpy 数组或其他维护其结构的结构
- python - 每组重叠间隔切片之间的总和值
- vue.js - How to add icon to the Header in vuetify DataTable
- email - Proxmox 配置和 Smarthost