|
kabe さん、こん**は。hidemi Oya です。
>なんでだ〜と思ったのですが、kihon テーブルの登録番号は有効成分の数だけ同じ登録番号が存在するので、その分、レコード数が増えてしまいます。
確かに、kihon テーブルをそのまま LEFT JOIN するとそうなりますね。SQLite は検索速度があまり落ちないので、すっかり見落としてました(^_^;)。
だから、ひとつの ID に対して複数の行が存在する場合は、テーブルを分けるってのが原則なんでしょうから。
>本来のマスターテーブルとして登録番号をプライマリーキーにした、テーブルを作る必要がありますね。
原則は原則として、検索速度に問題がなければ、下記のように有効成分を抜いて登録番号でグループ化するビューを作って、それを新 tekiyo ビューに LEFT JOIN するって手もありますね。
CREATE VIEW nkihon AS
SELECT
bango, shurui, meisho, tsusho, ryakusho, kongo, yoto, zaikei
FROM kihon
GROUP BY bango;
CREATE VIEW tekiyo AS
SELECT
a.bango AS bango,
nkihon.yoto AS yoto,
nkihon.zaikei AS zaikei,
nkihon.shurui AS shurui,
nkihon.meisho AS meisho,
nkihon.tsusho AS tsusho,
nkihon.ryakusho AS ryakusho,
nkihon.kongo AS kongo,
a.sakumotsu AS sakumotsu,
a.basho AS basho,
:
a.kaisu5 AS kaisu
FROM compact_tekiyo AS a
LEFT JOIN nkihon ON a.bango = nkihon.bango;
|
|