我有2个表:文件和用户。
files
----------------------------
|Fileid | name | type |
----------------------------
| 01 | file1 | private |
| 02 | file2 | private |
| 03 | file3 | Public |
----------------------------
和
user
---------------------
| Fileid | UserId |
---------------------
| 01 | user1 |
| 02 | user1 |
---------------------
我如何选择“用户”表中曾经ID的所有记录(私人和公共)以及“用户”表中不包含“用户ID”的任何其他用户的“公共”文件?请帮忙
答案 0 :(得分:2)
如果我正确理解了这个问题,那么您正在寻找LEFT JOIN
支持files
仅返回非空UserId
或Public
的所有字段{} }}
UserId IS NULL
答案 1 :(得分:0)
根据我的理解,第一部分需要2个循环。一个循环将从表中获取用户ID。第二个循环应放在第一个循环内。第二个将使用循环中的ID来获取所有文件。
第二部分可以通过使用带有SELECT * FROM files WHERE userID != $userID[$i]
等SQL查询的循环来完成,而$ userID应该是一个包含所有用户ID的数组。
注意:我假设您忘记在文件表中包含外键以将两个表连接在一起。