显示结果,不重复,取决于其他表mysql


Display results without repeat depending on other tables mysql

我需要解决一个问题,但我甚至不知道该怎么问,所以很抱歉得到这个标题。

请耐心等待,努力理解,谢谢。

我有这些表格和相应的字段:

users-用户列表

user_id | user_name (...)

classes-类别列表

class_id | class_name (...)

帖子-帖子列表

post_id | post_title (...)

uclass-这个表有每个用户可以访问的类的列表

uclass_id | class_id | user_id

pclass-该表列出了每个类都可以访问的帖子

pclass_id | post_id | class_id

用户可以访问多个类。Posts可以由几个类访问。

所以我需要得到用户可以访问的帖子列表。当用户可以访问一个类,而这个用户可以访问帖子时,就会发生这种情况。

我试着使用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

我知道少了一些东西,但我找不到它是什么…或者也许应该用完全不同的方式来做!

谢谢。

尝试

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'

我找到了解决方案,它是:

SELECT DISTINCT post.post_id (etc.)

这将类似于GROUP BY,但方式更好。

谢谢大家。