Можете да получите изреченията от 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
връща синонимите на всяко значение като списък, разделен със запетая, в един ред, за да намали броя на редовете. Можете да обмислите връщането им в отделна заявка (или като част от тази заявка, но с всичко останало дублирано), ако предпочитате.
АКТУАЛИЗАЦИЯ Ако наистина се нуждаете от синоними като редове в резултатите, следното ще го направи, но не бих го препоръчал:Синонимите и примерните изречения се отнасят към конкретна дефиниция, така че наборът от синоними ще бъде дублиран за всяко примерно изречение. напр. ако има 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;