根据其他表mysql显示结果而不重复

时间:2014-09-11 17:37:30

标签: php mysql

我需要解决一个问题,但我甚至不知道该怎么问,对标题感到抱歉。

请耐心等待,并尝试理解,谢谢。

我有这些表,以及相应的字段:

用户 - 用户列表

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

我知道有些东西不见了,但我找不到它是什么......或者它应该以完全不同的方式完成!

谢谢。

2 个答案:

答案 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类似,但效果更好。

谢谢大家。