90 lines
2.9 KiB
SQL
90 lines
2.9 KiB
SQL
CREATE VIEW "JMdict_EntryByKana"("kana", "entryId")
|
|
AS
|
|
SELECT
|
|
"JMdict_ReadingElement"."reading" AS "kana",
|
|
"JMdict_ReadingElement"."entryId" AS "entryId"
|
|
FROM "JMdict_ReadingElement";
|
|
|
|
|
|
CREATE VIEW "JMdict_EntryByEnglish"("english", "entryId")
|
|
AS
|
|
SELECT
|
|
"JMdict_SenseGlossary"."phrase" AS "english",
|
|
"JMdict_Sense"."senseId" AS "entryId"
|
|
FROM "JMdict_SenseGlossary" JOIN "JMdict_Sense" USING("senseId");
|
|
|
|
|
|
CREATE VIEW "JMdict_BaseAndFurigana"("entryId", "base", "furigana", "isFirst", "kanjiOrderNum", "readingOrderNum")
|
|
AS
|
|
SELECT
|
|
"JMdict_Entry"."entryId" AS "entryId",
|
|
CASE WHEN (
|
|
"JMdict_KanjiElement"."reading" IS NOT NULL
|
|
AND NOT "JMdict_ReadingElement"."readingDoesNotMatchKanji"
|
|
)
|
|
THEN "JMdict_KanjiElement"."reading"
|
|
ELSE "JMdict_ReadingElement"."reading"
|
|
END AS "base",
|
|
CASE WHEN (
|
|
"JMdict_KanjiElement"."reading" IS NOT NULL
|
|
AND NOT "JMdict_ReadingElement"."readingDoesNotMatchKanji"
|
|
)
|
|
THEN "JMdict_ReadingElement"."reading"
|
|
ELSE NULL
|
|
END AS "furigana",
|
|
COALESCE("JMdict_KanjiElement"."orderNum", 1)
|
|
+ "JMdict_ReadingElement"."orderNum"
|
|
= 2
|
|
AS "isFirst",
|
|
"JMdict_KanjiElement"."orderNum" AS "kanjiOrderNum",
|
|
"JMdict_ReadingElement"."orderNum" AS "readingOrderNum"
|
|
FROM "JMdict_Entry"
|
|
LEFT JOIN "JMdict_KanjiElement" USING("entryId")
|
|
LEFT JOIN "JMdict_ReadingElement" USING("entryId");
|
|
|
|
CREATE VIEW "JMdict_EntryCommon"("entryId")
|
|
AS
|
|
SELECT DISTINCT "entryId"
|
|
FROM "JMdict_EntryScore"
|
|
WHERE "JMdict_EntryScore"."common" = 1;
|
|
|
|
-- TODO: Make it possible to match words that contain the
|
|
-- kanji as an infix
|
|
|
|
CREATE VIEW "KANJIDIC_ExampleEntries"("kanji", "entryId")
|
|
AS
|
|
SELECT
|
|
"JMdict_KanjiElement"."entryId",
|
|
"KANJIDIC_Character"."literal" AS "kanji",
|
|
"JMdict_KanjiElement"."reading"
|
|
FROM
|
|
"KANJIDIC_Character"
|
|
JOIN "JMdict_KanjiElementFTS"
|
|
ON "JMdict_KanjiElementFTS"."reading" MATCH "KANJIDIC_Character"."literal" || '*'
|
|
JOIN "JMdict_KanjiElement"
|
|
ON "JMdict_KanjiElementFTS"."entryId" = "JMdict_KanjiElement"."entryId"
|
|
AND "JMdict_KanjiElementFTS"."reading" LIKE '%' || "JMdict_KanjiElement"."reading"
|
|
JOIN "JMdict_EntryScore"
|
|
ON "JMdict_EntryScore"."type" = 'k'
|
|
AND "JMdict_KanjiElement"."entryId" = "JMdict_EntryScore"."entryId"
|
|
AND "JMdict_KanjiElement"."reading" = "JMdict_EntryScore"."reading"
|
|
WHERE "JMdict_EntryScore"."common" = 1;
|
|
|
|
|
|
CREATE VIEW "RADKFILE_Radicals" AS
|
|
SELECT DISTINCT "radical" FROM "RADKFILE";
|
|
|
|
CREATE VIEW "JMdict_CombinedEntryScore"
|
|
AS
|
|
SELECT
|
|
CASE
|
|
WHEN "JMdict_EntryScore"."type" = 'k'
|
|
THEN (SELECT entryId FROM "JMdict_KanjiElement" WHERE "elementId" = "JMdict_EntryScore"."elementId")
|
|
WHEN "JMdict_EntryScore"."type" = 'r'
|
|
THEN (SELECT entryId FROM "JMdict_ReadingElement" WHERE "elementId" = "JMdict_EntryScore"."elementId")
|
|
END AS "entryId",
|
|
MAX("JMdict_EntryScore"."score") AS "score",
|
|
MAX("JMdict_EntryScore"."common") AS "common"
|
|
FROM "JMdict_EntryScore"
|
|
GROUP BY "entryId";
|