samples
から文を取得できます テーブル。例:
SELECT sample FROM samples WHERE synsetid = 201062889;
収量:
したがって、クエリを次のように拡張できます。
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;
注:GROUP_CONCAT
を使用した副選択 行数を減らすために、各センスの同義語を1行のコンマ区切りリストとして返します。必要に応じて、これらを別のクエリで返すことを検討できます(または、このクエリの一部として、他のすべてを複製して)。
更新 結果の行として同義語が本当に必要な場合は、次のようにしますが、お勧めしません。同義語と例文はどちらも特定の定義に関係するため、同義語のセットは例文ごとに複製されます。例えば。特定の定義に4つの例文と5つの同義語がある場合、結果はその定義に対して4 x 5=20行になります。
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;