php - 从多个 mysql 表 WHERE 获取数据。

标签 php mysql

我有 2 个数据库表。

一个叫做文件。看起来像这样。

文件

USERID FILENAME DEFAULT NETWORKID
88      hello      1      10293
9       bob               
43      opener     1      10293
43      facepa            
9       closer           

二表用户网络

USERID NETWORKID 
9       10293
43

我当前的sql查询是

SELECT file,filename,filetype,size, forename, files.userID
FROM (`files`)
LEFT JOIN users ON users.userID = files.userID
WHERE files.userID = $userID ORDER BY id DESC

这当前获取 userid 为 9 的文件列表。

如您所见,我的用户 ID 9 也在 usernetworks 表中,我连接到网络 ID 10293。

我还想在查询中包括任何默认为 1 的行,并且网络 ID 与 usernetworks 表中任何具有我的用户 ID 的行相匹配。

因此,在 userid 连接到 networkid 的情况下,还会显示那些结果以及具有 userid 而没有网络 id 的结果。

感谢任何帮助。

最佳答案

如果我没看错你的逻辑,那么我们可以通过首先将 files 左连接到 users 来实现它,条件是用户与你的用户 ID 匹配。然后,我们可以再次加入users,这次的条件是文件记录是默认的,网络ID匹配,匹配的用户也是你的用户。

SELECT f.*
FROM files f
LEFT JOIN users u1
    ON f.userID = u1.userID AND f.userID = $userID
LEFT JOIN usernetworks u2
    ON f.default = 1 AND
       f.networkid = u2.networkid AND u2.userID = $userID
WHERE
    u1.userID IS NOT NULL OR u2.userID IS NOT NULL;

实际上,如果您不打算从 users 表中选择任何列,那么您可以完全省略与该表的连接。我已将其保留,因为它符合您问题中的原始查询。

关于php - 从多个 mysql 表 WHERE 获取数据。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48685082/

相关文章:

mysql - 列出文件,计算 OK 和 NOK 的数量并按日期排序

php - 如何仅显示 Laravel Blade 模板中集合中的第一项的内容

php - 基于逻辑表达式在 PHP 中过滤数组

php - 使用数组的 str_replace 是格式化一个人的姓氏的正确方法吗?

php - 将多个 $_Posts 从表单添加到 MYSQL DB - 使用循环?

php - 在php5中,如何在具有分隔符的脚本中使用mysql_execute

mysql - 如何获取用户在SQL中输入的一个月前的数据

mysql - SQL查找列数

MySql删除csv文件的行

mysql - 在mysql中,如何将自动递增字段中的数据放入另一列中?