mysql条件查询

时间:2011-10-22 18:37:37

标签: php mysql sql

我有2个表:文件和用户。

files
----------------------------
|Fileid  | name  | type    |
----------------------------
| 01     | file1 | private |
| 02     | file2 | private |
| 03     | file3 | Public  |
----------------------------

user
---------------------
| Fileid  | UserId  |
---------------------
| 01      | user1   | 
| 02      | user1   |
---------------------

我如何选择“用户”表中曾经ID的所有记录(私人和公共)以及“用户”表中不包含“用户ID”的任何其他用户的“公共”文件?请帮忙

2 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,那么您正在寻找LEFT JOIN支持files仅返回非空UserIdPublic的所有字段{} }}

UserId IS NULL

答案 1 :(得分:0)

根据我的理解,第一部分需要2个循环。一个循环将从表中获取用户ID。第二个循环应放在第一个循环内。第二个将使用循环中的ID来获取所有文件。

第二部分可以通过使用带有SELECT * FROM files WHERE userID != $userID[$i]等SQL查询的循环来完成,而$ userID应该是一个包含所有用户ID的数组。

注意:我假设您忘记在文件表中包含外键以将两个表连接在一起。