2016-03-28 8 views
1

私は辞書プロジェクトのためのデータベースに取り組んでいます。私は単語と意味を - 多対多の関係で保存しなければならない。多対多関係の結合クエリを作成するにはどうすればよいですか?辞書プロジェクトのため

以下、私のテーブル構造でサンプルを説明しました。私はテーブルの構造が正しいと思うが、私はユーザーの検索中に一言の意味をすべて選択する方法を知らない。

また、私は単一の意味にリンクされたすべての単語を選択するためのクエリを書く必要があります。

また、1つの単語にリンクされたすべての意味を選択するためのクエリを作成する必要があります。

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

でなければなりません。

答えて

1
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

0

は試してみてください

select word, meaning 
from word_table 
join meaning_table on word_table.id=meaning_table.id; 
関連する問題