将 2 个表连接在一起并使用基于单独 mysql 查询的 where 函数

Joining 2 tables together and using the where function based on a separate mysql query

我正在搭建工作培训平台。我已经根据赋予他们的角色为用户创建了培训要求。如果该角色与文档保持一致,它将与用户相对立。我已经设法完成了大部分工作,但仍在努力寻找完成 mysqli 中 where 语句的最佳方法。

tbldocfiles 是我的文件列表。我正在查看 docid(可能是与文档关联的多个文件) tbltrainingaccess 设置角色(driver、仓库管理员、客户服务)并显示哪个角色(按 id)与 docfiles 中的文档相关联。 tblusertraining 是用户列表以及他们与他们关联的角色。 (driver,仓库管理员,客户服务)。

我正在列出与用户关联的文档,因此我认为以下是最好的方法:

  1. 查看用户以及分配了多少个角色he/she
  2. 查看第1点返回的角色(where函数)
  3. 识别并匹配与用户具有相同角色的文档(Join 函数)
  4. 创建列表,然后查看 docid 的唯一值。 (不同的值)

示例用户 Bri 具有 driver 和仓库管理员角色。 数据库中有 5 个文档,其中 3 个与 driver 角色相关联(docid 1,2,3),其中 2 个与仓库管理员角色相关联(docid 2,4)第 5 个文档相关联给客服。

我的查询应该这样做:

列出与用户 Bri 关联的角色关联的所有文档 1个 2个 3个 2个 4个 现在 select 上面列表中的唯一值(使用 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 * 来自 tblusertrainingrole where userid='1'(1 将是基于页面的变量 selection)

这里的结果是 1, 9 是 groupid 结果。

基本上,我们将不胜感激!我相信这会很简单,但我已经为此精疲力尽了一段时间,这里的大多数答案都有助于加入,但不是 where 语句(我能找到) 提前谢谢大家!

你可以在 where 中做一个 select 语句。因为它是一个 or 语句,所以您可以在结果中使用它。请将 * 替换为您需要的值的列名。应该看起来像

where groupid in (select * from tblusertrainingrole where userid = '1')