我在我的数据库中遇到问题。例如,如果我正在构建博客,我博客上的帖子应该有多个标签。我想我的帖子表中有tag_id
列,与我的tags
表中的tag_id
对应,但这意味着每个帖子只能有一个标签。我希望每个帖子都能够拥有多个标签。如何在单行中输入我的tag_id
列中的多个ID(对应于特定帖子)。如果它不适用于ID,它可以使用标签名称吗?我意识到我可以输入多个标签名称,但是如何将标签名称与tags
表中的tags_names
连接?单个列中的单个行中有多个条目postgres
回答
参照我几年前写的文章Implementation for tag based mail system by JOINS using MySQL Database,我会说你所做的是对的。所以,最后,你的表应该是这样的:
帖子
mysql> SELECT * FROM `mailserver`.`mails`;
+----+------------------+----------------------------------------------+
| ID | Subject | Content |
+----+------------------+----------------------------------------------+
| 1 | Welcome Home | Hey man, Welcome to your new house. |
| 2 | Hi | Hey there, wanna see what you doing at home! |
| 3 | Your promotion | This is to say about your promotion! |
| 4 | What the hell? | College is really bad! |
| 5 | My Project Work! | I have hereby attached my project work! |
+----+------------------+----------------------------------------------+
5 rows in set (0.00 sec)
标签:
mysql> SELECT * FROM `mailserver`.`maillabel`;
+----+-----------+--------+
| ID | LabelName | MailID |
+----+-----------+--------+
| 1 | inbox | 1 |
| 2 | inbox | 3 |
| 3 | inbox | 5 |
| 4 | personal | 1 |
| 5 | friends | 2 |
| 6 | office | 3 |
| 7 | personal | 4 |
| 8 | college | 5 |
+----+-----------+--------+
8 rows in set (0.02 sec)
关系表
mysql> SELECT * FROM `mailserver`.`maillabel`;
+----+-----------+--------+
| ID | LabelName | MailID |
+----+-----------+--------+
| 1 | inbox | 1 |
| 2 | inbox | 3 |
| 3 | inbox | 5 |
| 4 | personal | 1 |
| 5 | friends | 2 |
| 6 | office | 3 |
| 7 | personal | 4 |
| 8 | college | 5 |
+----+-----------+--------+
8 rows in set (0.02 sec)
最终,你会对两件事情感兴趣。
- 如何从一个特定的标签获取帖子?
- 如何获得一个特定帖子的所有标签?
为了回答上述疑问:
所有帖子特定标签,inbox
:
mysql> SELECT *
FROM `mailserver`.`mails`
JOIN `mailserver`.`maillabel`
ON `mailserver`.`mails`.`id` = `mailserver`.`maillabel`.`mailid`
WHERE `mailserver`.`maillabel`.`labelname` = 'inbox';
+----+------------------+-----------------------------------------+----+-----------+--------+
| ID | Subject | Content | ID | LabelName | MailID |
+----+------------------+-----------------------------------------+----+-----------+--------+
| 1 | Welcome Home | Hey man, Welcome to your new house. | 1 | inbox | 1 |
| 3 | Your promotion | This is to say about your promotion! | 2 | inbox | 3 |
| 5 | My Project Work! | I have hereby attached my project work! | 3 | inbox | 5 |
+----+------------------+-----------------------------------------+----+-----------+--------+
3 rows in set (0.00 sec)
并回答第二个问题...
获取一个特定帖子的标签:
mysql> SELECT labelname
FROM `mailserver`.`maillabel`
JOIN `mailserver`.`mails`
ON `mailserver`.`mails`.`id` = `mailserver`.`maillabel`.`mailid`
WHERE `mailserver`.`mails`.`id` = 3;
+-----------+
| labelname |
+-----------+
| inbox |
| office |
+-----------+
2 rows in set (0.00 sec)
该实现适用于MySQL服务器5.x。这个概念可以应用于Oracle,Microsoft SQL Server,IBM DB2等。即使我们可以将其应用于MS Access。只是查询的语法在每个数据库中都不相同。
在我的''tags'''表中添加一个非唯一的'''''''''''应该算出来!非常感谢!!! –
@ParthPatel你介意通过点击勾号按钮来接受我的答案吗?今后,如果你不接受任何答案,只是提出问题,你就有可能会质疑禁令,这将使你根本不会在本网站上提问! ':(' –
@ParthPatel由于答案对你有帮助,你应该通过点击Tick按钮来接受答案,这对未来的读者也会有所帮助 –
- 1. Rails表单中的多个条目
- 2. Python:re.sub列表中有多个项目的单个项目
- 3. 单个项目中有多个.gitignores
- 4. Rails - 单个属性的多个条目
- 5. 中显示多类别单个条目
- 6. 将一个单元格中的多个条目转换为多个行
- 7. 单个StaggeredGridView中有多个列?
- 8. Android:多个AppWidgets - 一个清单条目
- 9. 单个系列和单个渲染器的多个颜色条
- 10. 更新单个查询中的多个条目。 Android SQLite
- 11. 单个Yapdatabase行的多个索引条目
- 12. 根据表达式中的多个条件更新单个列
- 13. 基于在多个SQL表中查找更新单个条目
- 14. 要在多个列中检索多行值转换为单列单个表
- 15. 按单个列对多个csv文件(在一个目录中)进行排序
- 16. 创建多个单词表中单列
- 17. 如果PHP中只有一个条目,显示“单词”单数?
- 18. 用条件在多个数据表行中减去单个值
- 19. SQL中的多个条目?
- 20. 在linux中确定列中的单个条目
- 21. 在单个PGexec调用中传递多个postgres SQL语句
- 22. 在选择查询中的单个IF中的多个条件
- 23. 单个表中有多个SQL查询
- 24. 为df行中的每个条目创建单行
- 25. 将一个文件中的单列条目匹配到第二个文件中的列条目,该列条目由一个列表组成
- 26. 单个或多个列表
- 27. 返回关联表的单个(有限)行的多个列
- 28. 如何在postgres中的单个查询语句中的一个表中创建多个列?
- 29. 如何计算单个查询中多列的单个总和
- 30. 从PHP中循环中排除(黑名单)多个Json条目
您可以在此获得所有答案:[**通过JOINS使用MySQL数据库实现基于标记的邮件系统**](https://blog.praveen.science/implementation-for-tag-based-mail-system- by-joins-using-mysql-database /) - 这是我几年前写的一篇文章! –