我需要很多关系查询的帮助

时间:2016-03-28 11:52:22

标签: mysql

我正在为字典项目开发数据库。我必须用many to many关系存储一个单词和含义。

下面我提到了具有我的表结构的示例。我希望表结构是正确的,但我不知道如何在用户搜索时为单个单词选择所有含义。

而且我还必须编写一个查询来选择链接到单个含义的所有单词和同义词。而且我还必须编写一个查询来选择链接到单个单词的所有含义和同义词。

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        | 
+---------+-----------+ 




   synonyms_table  
    +----+--------+ 
    | id | synonys| 
    +----+--------+ 
    |  1 |  aa    | 
    |  2 |  bb    | 
    |  3 |  cc    | 
    +----+--------+ 


    word_synonyms_table  
    +---------+-----------+ 
    | word_id | synonym_id| 
    +---------+-----------+ 
    |  1      |  1        | 
    |  1      |  2        | 
    |  1      |  3        | 
    +---------+-----------+ 
  

预期输出应该是这样的。

     

如果用户搜索单词" A"在word表中,结果应为

Result for word "A"
    +----+----------+---------+ 
    | word| meaning | synonys |
    +----+----------+---------+ 
    |  A |  X       | aa      |
    |  A |  Y       | bb      |
    |  A |  Z       | cc      |
    +----+----------+---------+

1 个答案:

答案 0 :(得分:0)

你只需要很多连接:

SELECT w.word,m.meaning,s.synonys
FROM word_table w
INNER JOIN word_meaning_table wm
 ON(w.id = wm.word_id)
INNER JOIN meaning_table m
 ON(wm.meaning_id = m.id)
INNER JOIN word_synonyms_table ws
 ON(w.id = ws.word_id)
INNER JOIN synonyms_table s
 ON(ws.synonym_id = s.id)

让我让你this document解释所有关于连接语法的内容。