Věty můžete získat z samples
stůl. Např.:
SELECT sample FROM samples WHERE synsetid = 201062889;
výnosy:
Svůj dotaz tedy můžete rozšířit následovně:
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;
Poznámka:Podvýběr s GROUP_CONCAT
vrátí synonyma každého smyslu jako seznam oddělený čárkami v jednom řádku, aby se snížil počet řádků. Pokud dáváte přednost, můžete zvážit jejich vrácení v samostatném dotazu (nebo jako součást tohoto dotazu, ale se vším ostatním duplicitním).
AKTUALIZACE Pokud opravdu potřebujete synonyma jako řádky ve výsledcích, udělá to následující, ale nedoporučoval bych to:Synonyma i příkladové věty se vztahují ke konkrétní definici, takže sada synonym bude pro každou ukázkovou větu duplikována. Např. pokud existují 4 vzorové věty a 5 synonym pro konkrétní definici, výsledky by měly 4 x 5 =20 řádků jen pro tuto definici.
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;