我陷入了一种奇怪的境地。它是这样的:
我有2张桌子。一个叫做用户,它有我所有的用户/密码详细信息,然后我有另一个名为userFiles的表,它有一个用户ID和一个他有权使用的文件的fileID。
现在,请注意,1个帐户可以拥有多个文件的权限,多个帐户可以拥有1个文件的权限。
所以基本上,第一个表有,比如说:
并在表2中说:
现在,这就是我想要做的事情:
我想选择所有用户! (在这种情况下都是!),同样,我想加入另一个表,但我只想加入我指定特定fID的行!
例如,我想用fID 67
查询用户和用户权限我想得到这个:
,对于fID 102(即使它给出的值不是NULL,我可以在我的PHP代码中使用,也没关系)
这是我尝试使用的查询
SELECT * FROM users LEFT JOIN userFiles ON users.ID=userFiles.uID WHERE userFiles.fID = 102
但是,这个查询只返回一行,而我不是两个。
如果您无法使用mySQL解决方案,请尝试帮助我,以便我可以过滤掉结果,并使用PHP获得我想要的东西......
非常感谢!
答案 0 :(得分:2)
您需要将条件从WHERE移动到JOIN,如下所示:
SELECT * FROM users
LEFT JOIN userFiles ON users.ID=userFiles.uID AND userFiles.fID = 102
建议只有users.ID字段对于无权访问该文件的用户为NULL - 仍然会填充flID字段。
为了将来参考,WHERE条件过滤整个结果集,而JOIN条件只过滤在整个结果集上加入的记录(不影响返回的行数)。