sql >> データベース >  >> RDS >> Mysql

例文を返すWordnetクエリ

    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;
    



    1. mySQLの元の行番号を返す

    2. PostgreSQL関数の入力パラメーターとしてのユーザー定義型

    3. postgresqlとcodeigniterを接続する

    4. 数字が欠落することなく、連続して増加する数字の列を取得するにはどうすればよいですか?