データベースのテーブルに問題があります。たとえばブログを作成している場合、ブログの投稿には複数のタグが必要です。投稿テーブルにtag_id
という列があると思ったのですが、これはtag_id
のtags
という表に対応していますが、それは各投稿にタグが1つしかないことを意味します。私はそれぞれの投稿が複数のタグを持つことができるようにしたい。 tag_id
列に複数のIDを1行で入力するにはどうすればよいですか(特定の投稿に対応)。 idsで動作しない場合は、タグ名を使用できますか?私は複数のタグ名を入力することができますが、その後、tags
テーブルのtags_names
とタグ名をどのように結びつけるのですか?単一列の単一行に複数のエントリがあります。
答えて
私が数年前に書いた私の記事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)
最終的には、2つのことに興味があります。
- 特定のタグから投稿を取得するにはどうすればよいですか?
- 特定の投稿のすべてのタグを取得するにはどうすればよいですか?特定のタグのための
すべての記事、
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)
そして、2つ目の質問に答えるために...
取得
は、上記のクエリに応答するために、特定の投稿のタグ:
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 Server 5.xに有効です。この概念は、Oracle、Microsoft SQL Server、IBM DB2などに適用できます。これをMS Accessにも適用することができます。クエリの構文はデータベースごとに異なります。
私の '' '' '' 'テーブルに一意でない' '' post_id '' 'を追加するとうまくいくはずです!どうもありがとうございます!!! –
@ParthPatelあなたはティックボタンをクリックして自分の答えを受け入れることができますか?将来、あなたが何の答えも受け入れず、ただ質問をするならば、あなたは質問禁止の危険性があり、あなたはこのサイトで全く質問をしません! ':(' –
@ParthPatel答えがあなたに役立つので、あなたはTickボタンをクリックすることで答えを受け入れるべきです。将来の読者にも役立ちます –
- 1. 複数のエントリ単一セル
- 2. MySQLの単一の行に複数のキーがあります
- 3. 複数のデータベースがAndroidの単一のアプリケーションにあります
- 4. 単一行のサブクエリが複数の行
- 5. 複数行と単一行
- 6. 単一行の複数の行を単一行の単一レコードに変換するinformatica
- 7. 複数列、複数行を複数列、単一行のデータフレームに変換する
- 8. 印刷単一のエントリが一致し
- 9. ジャスパーの単一行に複数のバンド
- 10. MySQLの単一行複数の列複数のテーブル
- 11. powershellを使用して、複数の行を含むCSV単一列を単一行に変換します。
- 12. mysqlの複数のロック、単一の行
- 13. 複数のフレックスボックスの単一行
- 14. Simple_Formいくつかの入力が複数行あり、一番上に単一ラベルが付きます
- 15. 配列から単一単語のエントリを削除する
- 16. 複数のドメイン、単一ノード(急行)アプリケーション
- 17. 複数ワード列の列内の単一ワードの一致
- 18. Pythonのスパース行列での単一エントリへのアクセス
- 19. 単一の.hppファイルの中に複数のクラス名があります
- 20. MongoDB複数の単一インデックス
- 21. 複数のジャー、単一パーシスタンスユニットソリューション?
- 22. wordpress複数の単一ページ
- 23. 単一のgitリポジトリに複数のXcodeプロジェクトがありますか?
- 24. 値のある単一行
- 25. MongoDBインデックス:複数の単一フィールド対単一の化合物?
- 26. JAMA - 単一の行列
- 27. 単一行から単一の列を選択するHibernate
- 28. PIGの複数行から単一カンマ区切り行へ
- 29. WHERE句内の複数の行の単一の列
- 30. 複数の行を単一の行として返します
[** MySQLデータベースを使用したJOINSによるタグベースのメールシステムの実装**](https://blog.praveen.science/implementation-for-tag-based-mail-system- by-joins-using-mysql-database /) - それは私が数年前に書いた記事です! –