我需要解决一个问题,但我甚至不知道该怎么问,对标题感到抱歉。
请耐心等待,并尝试理解,谢谢。
我有这些表,以及相应的字段:
用户 - 用户列表
user_id | user_name (...)
类 - 类列表
class_id | class_name (...)
帖子 - 帖子列表
post_id | post_title (...)
uclass - 此表包含每个用户有权访问的类列表
uclass_id | class_id | user_id
pclass - 此表包含每个类有权访问的帖子列表
pclass_id | post_id | class_id
用户可以访问多个类。 帖子可以通过几个班级访问。
所以我需要获取用户有权访问的帖子列表。当用户有权访问某个类并且这个人可以访问帖子时,就会发生这种情况。
我尝试使用LEFT JOIN来做这个问题是因为用户可以访问多个类,而且几个类可以访问同一个帖子,结果是有些帖子出现了好几次。
如果没有重复的结果,最好的方法是什么。
我希望你明白我的需要。
非常感谢。
修改
我尝试了很多方法,这是一个:
SELECT * FROM post
LEFT JOIN pclass ON post.post_id = pclass.post_id
LEFT JOIN uclass ON uclass.user_id = 'USERDEMOUSER'
WHERE uclass.class_id = pclass.class_id
我知道有些东西不见了,但我找不到它是什么......或者它应该以完全不同的方式完成!
谢谢。
答案 0 :(得分:0)
试
SELECT * FROM post
LEFT JOIN pclass ON post.post_id = pclass.post_id
LEFT JOIN uclass ON uclass.class_id = pclass.class_id
WHERE uclass.user_id = 'USERDEMOUSER'
答案 1 :(得分:0)
我找到了解决方案:
SELECT DISTINCT post.post_id (etc.)
这与GROUP BY类似,但效果更好。
谢谢大家。