【发布时间】:2021-08-10 03:31:49
【问题描述】:
如果文章和标签之间存在多对多关系,那么选择所有包含特定用户存储的标签的文章的最佳方法是什么?
对于此示例,假设有一个包含 user_id 列的 users 表。 文章
| Article_id | Article_name |
|---|---|
| 1 | Dogs |
| 2 | Cats |
| 3 | Sheep |
标签
| Tag_id |
|---|
| Pets |
| Outdoors |
| Grass |
Article_Tags
| Article_id | tag_id |
|---|---|
| 1 | Pets |
| 1 | Grass |
| 1 | Outdoors |
| 2 | Outdoors |
| 3 | Grass |
| 3 | Outdoors |
Users_Tags
| User_id | tag_id |
|---|---|
| User1 | Pets |
| User1 | Grass |
| User2 | Pets |
如果我想在 Users_Tags 中显示具有用户存储的与其 ID 相关联的任何标签的所有文章,那么最好的方法是什么?我遇到过嵌套选择和内部连接,但我无法找出解决此问题的最佳方法。
例如,由于 User1 存储了标签 Pets 和 Grass 及其 User_id,我想返回 ID 为 1 和 2 的文章,因为这两篇文章至少有一个用户存储的标签相关联用它。
Article_id | Article_ Name |Tag_id
1 | Dogs | Pets
1 | Dogs | Grass
3 | Sheep | Grass
上面提供了一个示例输出。为了清楚起见,我包括了对同一篇文章的重复,尽管实际上我只想重复一次。
【问题讨论】:
-
感谢@eyllanesc 的格式化帮助!我遇到了麻烦。
-
嗨@tagger,请提供示例输出。这更好理解。
-
我添加了一个示例输出@Rahul Biswas
-
嗨@tagger 为什么狗等于铸件 1 不是草
-
@Rahul Biswas 对不起!我在半睡半醒的时候进行了编辑。它应该等于草。
标签: postgresql