我在为字典项目开发数据库。我必须存储一个词和一个意思——多对多——关系。
下面我已经提到了我的表结构的样本。我希望表的结构是正确的,但是我不知道如何在用户搜索时选择单个单词的所有含义。
而且我还必须编写一个查询来选择所有链接到单个含义的单词。
我还必须编写一个查询来选择链接到单个单词的所有含义。
word_table
+----+------+
| id | word |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
+----+------+
meaning_table
+----+--------+
| id | meaning|
+----+--------+
| 1 | X |
| 2 | Y |
| 3 | Z |
+----+--------+
word_meaning_table
+---------+-----------+
| word_id | meaning_id|
+---------+-----------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 3 |
| 3 | 2 |
| 3 | 3 |
+---------+-----------+
预期的输出应该是这样的。
如果用户在word表中搜索单词“a”,则结果应该是
Result for word "A"
+----+----------+
| word| meaning |
+----+----------+
| A | X |
| A | Y |
| A | Z |
+----+----------+
我不知道如何为这个场景编写连接查询。
最佳答案
SELECT wt.word, mt.meaning
FROM word_table wt
INNER JOIN word_meaning_table wmt
ON wt.id = wmt.word_id
INNER JOIN meaning_table mt
ON wmt.meaning_id = mt.id
WHERE wt.word = 'A'
按照下面的链接进行工作演示:
SQLFiddle
关于mysql - 如何编写多对多关系的联接查询?用于字典项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36260132/