我在为字典项目开发数据库。我必须存储一个词和一个意思——多对多——关系。
下面我已经提到了我的表结构的样本。我希望表的结构是正确的,但是我不知道如何在用户搜索时选择单个单词的所有含义。
而且我还必须编写一个查询来选择所有链接到单个含义的单词。
我还必须编写一个查询来选择链接到单个单词的所有含义。

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/

10-16 14:48