Die Sätze können Sie den samples
entnehmen Tisch. Beispiel:
SELECT sample FROM samples WHERE synsetid = 201062889;
ergibt:
Sie könnten Ihre Abfrage also wie folgt erweitern:
SELECT
a.lemma AS `word`,
c.definition,
c.pos AS `part of speech`,
d.sample AS `example sentence`,
(SELECT
GROUP_CONCAT(a1.lemma)
FROM
words a1
INNER JOIN
senses b1 ON a1.wordid = b1.wordid
WHERE
b1.synsetid = b.synsetid
AND a1.lemma <> a.lemma
GROUP BY b.synsetid) AS `synonyms`
FROM
words a
INNER JOIN
senses b ON a.wordid = b.wordid
INNER JOIN
synsets c ON b.synsetid = c.synsetid
INNER JOIN
samples d ON b.synsetid = d.synsetid
WHERE
a.lemma = 'carry'
ORDER BY a.lemma , c.definition , d.sample;
Hinweis:Die Unterauswahl mit einem GROUP_CONCAT
gibt die Synonyme jedes Sinnes als kommagetrennte Liste in einer einzelnen Zeile zurück, um die Anzahl der Zeilen zu reduzieren. Sie können diese in einer separaten Abfrage (oder als Teil dieser Abfrage, aber mit allem anderen dupliziert) zurückgeben, wenn Sie dies bevorzugen.
AKTUALISIEREN Wenn Sie wirklich Synonyme als Zeilen in den Ergebnissen benötigen, wird dies wie folgt getan, aber ich würde es nicht empfehlen:Synonyme und Beispielsätze gehören beide zu einer bestimmten Definition, sodass der Satz von Synonymen für jeden Beispielsatz dupliziert wird. Z.B. Wenn es 4 Beispielsätze und 5 Synonyme für eine bestimmte Definition gibt, würden die Ergebnisse 4 x 5 =20 Zeilen nur für diese Definition haben.
SELECT
a.lemma AS `word`,
c.definition,
c.pos AS `part of speech`,
d.sample AS `example sentence`,
subq.lemma AS `synonym`
FROM
words a
INNER JOIN
senses b ON a.wordid = b.wordid
INNER JOIN
synsets c ON b.synsetid = c.synsetid
INNER JOIN
samples d ON b.synsetid = d.synsetid
LEFT JOIN
(SELECT
a1.lemma, b1.synsetid
FROM
senses b1
INNER JOIN words a1 ON a1.wordid = b1.wordid) subq ON subq.synsetid = b.synsetid
AND subq.lemma <> a.lemma
WHERE
a.lemma = 'carry'
ORDER BY a.lemma , c.definition , d.sample;