2016-03-28 5 views
1

Ich arbeite an Datenbank für Wörterbuchprojekt. Ich muss ein Wort und eine Bedeutung mit - vielen zu vielen - Beziehungen speichern.Wie schreibe ich eine Join-Abfrage für viele zu viele Beziehung? für Wörterbuchprojekt

Unten habe ich das Beispiel mit meiner Tabellenstruktur erwähnt. Ich hoffe, dass die Tabellenstruktur stimmt, aber ich weiß nicht, wie man alle Bedeutungen für einzelnes Wort während der Benutzersuche auswählt.

Und auch ich muss eine Abfrage schreiben, um alle Wörter mit einer einzigen Bedeutung verknüpft zu wählen.

Und auch ich muss eine Abfrage schreiben, um alle Bedeutungen zu einem einzelnen Wort verknüpft auszuwählen.

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

Erwartete Ausgabe wie folgt sein sollte.

Wenn der Benutzer für ein Wort „A“ in Worttabelle suchen sollte das Ergebnis

Result for word "A" 
    +----+----------+ 
    | word| meaning | 
    +----+----------+ 
    | A | X  | 
    | A | Y  | 
    | A | Z  | 
    +----+----------+ 

weiß ich nicht, wie man eine Join-Abfrage für dieses Szenario zu schreiben.

Antwort

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' 

Folgen Sie dem Link unten für eine Arbeits Demo:

SQLFiddle

0

Versuchen

select word, meaning 
from word_table 
join meaning_table on word_table.id=meaning_table.id; 
Verwandte Themen