Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie Wordnet do zwrócenia przykładowych zdań

Możesz pobrać zdania z samples stół. Np.:

SELECT sample FROM samples WHERE synsetid = 201062889;

plony:

Możesz więc rozszerzyć swoje zapytanie w następujący sposób:

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;

Uwaga:podwybór z GROUP_CONCAT zwraca synonimy każdego sensu jako listę oddzieloną przecinkami w jednym wierszu w celu zmniejszenia liczby wierszy. Możesz rozważyć zwrócenie ich w osobnym zapytaniu (lub jako część tego zapytania, ale z duplikatem wszystkiego innego), jeśli wolisz.

AKTUALIZUJ Jeśli naprawdę potrzebujesz synonimów jako wierszy w wynikach, zrobi to poniższe, ale nie polecam tego:Synonimy i przykładowe zdania odnoszą się do określonej definicji, więc zestaw synonimów zostanie zduplikowany dla każdego przykładowego zdania. Np. jeśli istnieją 4 przykładowe zdania i 5 synonimów dla określonej definicji, wyniki będą miały 4 x 5 =20 wierszy tylko dla tej definicji.

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Inżynieria wsteczna bazy danych MySQL przy użyciu MySQL Workbench

  2. Ruby on Rails MySQL #08S01 Zły uścisk dłoni - downgrade MySQL?

  3. Czy rozwijane wybrane pola są podatne na wszelkiego rodzaju wstrzyknięcia?

  4. Wyeksportuj moje dane analityczne i umieść je w bazie danych

  5. wykonaj procedurę składowaną w skrypcie aplikacji google