分類付き m_byochu

このトピックの投稿一覧へ

なし 分類付き m_byochu

msg# 1.3.2
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010.11.03 01:25 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
病害虫タブの病害虫選択ダイアログボックスにも使用するかどうかは別として、作物タブや定型処理タブの病害虫選択ダイアログボックスで雑草・病害・害虫・鳥獣による絞込ができるように、分類付きの m_byochu を作ってみました。例外処理がいくつか必要なので、登録内容が変わると例外処理部分は若干修正が必要になるかもしれません。
m_kihon は作成済み、m_tekiyo は中間テーブルを作成済みという前提です。m_tekiyo の中間テーブルの名前が異なる場合は、m_tekiyo 部分を中間テーブルの名前に変更してください。

--/d
drop table if exists t_byochu;
create temp table t_byochu as select distinct byochu from m_tekiyo order by byochu;
drop table if exists m_byochu;
create table m_byochu (idbyochu integer primary key autoincrement, byochu varchar unique, cid integer);
begin transaction;
insert into m_byochu (byochu, cid) select byochu, 0 from t_byochu where ifnullstr(byochu, '-') != '-';
update m_byochu set cid = 4 where byochu in (select distinct byochu from m_tekiyo where mokuteki = '忌避' or bango in (select bango from m_kihon where koka like '%忌避%'));
update m_byochu set cid = 3 where byochu in (select distinct byochu from m_tekiyo where mokuteki in ('誘引', '交尾阻害') or bango in (select bango from m_kihon where yoto like '殺虫%' or koka like '%誘引' or koka like '%殺虫%'));
update m_byochu set cid = 3 where byochu like '%ナメクジ';
update m_byochu set cid = 1 where byochu like '%雑草%' or byochu in (select distinct byochu from m_tekiyo where bango in (select bango from m_kihon where yoto = '除草剤'));
update m_byochu set cid = 2 where byochu like '%病%' or byochu like'%症%' or byochu like '%菌%' or byochu like '%腐%' or byochu like '%タケ';
update m_byochu set cid = 0 where byochu like '活性化%' or byochu like '%覚醒%';
update m_byochu set cid = 4 where byochu in ('野ウサギ', '野ソ');
commit;
drop table if exists t_byochu;
(1) t_byochu を作らずに、m_tekiyo から直接 insert 可能ですが、t_byochu からの方がわずかに速かったので、一応テンポラリテーブルを作成するようにしています。
(2) 害虫については、"mokuteki in ('誘引', '交尾阻害') or " の部分を削除しても同じ結果が得られ、わずかに高速になります。が、これも新剤の登録内容によっては必要になるかもしれないので、あえて残してあります。
(3) UTF-8 のせいか、order by byochu で「黄」や「黒」で始まる病害名が一番最後になってしまうのがちょっと違和感があります。ふりがな・別名フィールドを作っておいて、病害虫辞書から逆変換して、ふりがなでソートした方が良いかもしれません。
投票数:2 平均点:5.00

投稿ツリー

  条件検索へ