ACFinderでの作物名コードの扱いについて

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2010.10.25 19:14
sugak  新米   投稿数: 2
ごぶさたしております。
以前、農薬ナビ研究の頃にお世話になりました菅原です。

もうお気づきかもしれませんが、
FAMICの旧農薬検索システムのDBが更新されなくなりました。
ACFinderでは、旧システムの「作物名称絞込み」ページから
作物名とコードのリストを取得する仕様だったと思いますが、
10/22付の農薬登録情報にある作物名と比較したところ、
以下の農薬について旧システムにない作物名がありました。

登録番号 農薬名称 作物名
22419 ベニカマイルド液剤 野菜類(いちご、トマトを除く)
21598 あめんこ100 野菜類(いちご、トマトを除く)
21597 エコピタ液剤 野菜類(いちご、トマトを除く)
21205 ベタリンB 茶(摘採直後)
14262 プラテン80 茶(摘採直後)
19636 ピリカット乳剤 花き類・観葉植物(きく、宿根かすみそう、りんどうを除く)
17034 クロルピクリン錠剤 豆類(未成熟、ただし、さやいんげん、さやえんどう、未成熟そらまめを除く)

なお、適用病害虫雑草名についても同様に新たな表記がありました。
特に作物名コードは、検索を行う上で非常に重要ですが、
現在すべて取得できるのはJPP-NETだけということになります。

今後、ACFinderで作物名コードや病害虫コードをどう扱っていくか、
ぜひご意見をうかがえたらと思います。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010.10.25 20:29 | 最終変更
kabe  長老   投稿数: 231
お久しぶりです。

今、確認しました。
SELECT DISTINCT idsaku,sakumotsu FROM m_tekiyo order by idsaku

病害雑草名では以下にコードが付いていないので、病害虫タブでの検索ができません。
SELECT DISTINCT idbyochu,byochu FROM m_tekiyo order by idbyochu
アオミドロ・藻類による表層はく離(北陸、近畿・中国・四国)
アオミドロ・藻類による表層はく離(関東・東山・東海、近畿・中国・四国、九州)
オモダカ(東北、関東・東山・東海、近畿・中国・四国)
バルデンシア葉枯病
乾性根腐病
果実赤点病

暫定的に、独自にコードを追加することで対応します。
少々お待ちください。

検索もれをなくすには、適用データから連番でコード付けするのが一番確実ですが、そうすると上位分類の判断ができなくなります。

何らかの独自のコードと作物名の対応テーブルを持つ必要がありますね。
ただそうすると、新しい適用データを確認後に、もれているものの、コードを付加しなければならず、完全なデータベースを作成するには、場合によって2回更新してもらう必要が出てきます。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.10.25 23:53
kabe  長老   投稿数: 231
ACFinder 101025test版をアップしました。
http://acfinder.kabe.info/

強制的に作物、病害虫コードを追加しています。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.10.26 02:07 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
菅原さん、お久しぶりです。

いよいよ、新システムの弊害が出てきましたねorz。FAMIC にお願いして、Excel や CSV に作物コード・病害虫コードのファイルを追加してもらうのが一番確実なので、可能かどうか問い合わせてみます。

FAMIC 側で対応していただけない場合は、ちょっと検索が遅くなるかもしれませんが、次のようにすればデータベースの2回更新は避けられるかなあ。1 を更新するまで、検索漏れが生じるのは避けられませんが…。
3 の方法だと検索が遅いようなら、ACFinder の起動時に毎回現行の m_tekiyo 相当のテンポラリテーブルを作成する方法もありますが、こちらは ACFinder の起動がすごく遅くなりそう
1. sepec.bunrui のリソース分離と同じ方法で、独自コードを付与した m_sakumotsu, m_byochu を ACFinder のサイトから供給
2. m_tekiyo から idsaku, idbyochu フィールドを削除して、m_sakumotsu, m_byochu が更新されても m_tekiyo の更新を不要とする
3. 検索は、m_tekiyo の sakumotsu, byochu フィールドをキーに m_sakumotsu, m_byochu テーブルから idsaku, idbyochu を JOIN したテンポラリービューで行う
投票数:3 平均点:6.67
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 | 投稿日時 2010.10.26 17:52 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
本日午後、FAMIC にお願いメールを出しておきました。どういう返事が来るかは分かりませんし、対応いただけるとしてもいつからになるか分かりません。
ってことで、当面の対策として、m_sakumotsu, m_byochu を更新するまで新たな作物名や病害虫名の選択ができなくても、検索漏れが無いようにする方法を考えてみました。

現在は検索に m_sakumotsu, m_byochu を使用しているため、新しい作物名・病害虫名があると検索漏れが生じます。なので、検索高速化のための作物・病害虫名テーブルは m_tekiyo から別途作成するってのはどうでしょう?

とりあえず、作物名による検索だけ試してみました。まず、m_kihon に作物名インデックスを作り、さらにm_kihon から作物名だけを抽出したテンポラリーテーブルを作成します。実際には、データベース更新時に作物名と病害虫名でインデックスとパーマネントテーブルを作成することになります。
--/d
CREATE INDEX idxSakumotsu ON m_tekiyo (sakumotsu);
CREATE TEMP TABLE tSakumotsu AS SELECT DISTINCT sakumotsu FROM m_tekiyo;


この tSakumotsu を使用して、下記のような検索を行うと、私の環境で3回実行して、検索時間は 0.23~0.25 秒です。
SELECT * FROM tekiyo WHERE sakumotsu IN(SELECT sakumotsu FROM tSakumotsu WHERE sakumotsu REGEXP '(^|、|\()(きゅうり|うり科野菜|野菜(類)?).*?(\)|、|$)' AND sakumotsu NOT REGEXP '\((.*、)?(きゅうり|うり科野菜|野菜(類)?)(、.*)?を除く');


現在の検索方法でも 0.23~0.25 秒だったので、検索速度の低下はありません。
SELECT * FROM tekiyo WHERE idsaku IN(SELECT idsaku FROM m_sakumotsu WHERE sakumotsu REGEXP '(^|、|\()(きゅうり|うり科野菜|野菜(類)?).*?(\)|、|$)' AND sakumotsu NOT REGEXP '\((.*、)?(きゅうり|うり科野菜|野菜(類)?)(、.*)?を除く');


下記のような、初期の検索方法だと 3.30~3.33 秒なので、さすがに作物名テーブルなしの検索には戻れません
SELECT * FROM tekiyo WHERE sakumotsu REGEXP '(^|、|\()(きゅうり|うり科野菜|野菜(類)?).*?(\)|、|$)' AND sakumotsu NOT REGEXP '\((.*、)?(きゅうり|うり科野菜|野菜(類)?)(、.*)?を除く';


この方法なら、既存の作物や病害虫で「○○○(△△を除く)」が追加されただけなら、m_sakumotu, m_byochu を更新する必要がなくなります。全く新たな作物名や病害虫名が追加されることはそれほど多くないので、m_sakumotsu, m_byochu のメインテナンスを簡略化できます。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.10.26 19:15 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
書き忘れてましたが、この方法は m_tekiyo から idsaku, idbyochu を削除できるため、データベースサイズを若干縮小できるというメリットもあります。
データベース更新速度も、現状では m_tekiyo への idsaku, idbyochu フィールドの付与にそこそこの時間がかかっているような感じがします。提案した方式だと、idxSakumotsu, idxByochu, tSakumotsu, tByochu の作成時間が必要になりますが、現行方式の idsaku, idbyochu の付与と idxIdSaku, idxIdByochu の作成が不要になるので、データベース更新の時間は現在と同程度以下になるのではないかと思われます。

FAMIC が作物コード・病害虫コード一覧を添付してくれるようになったとしても、それは作物名・病害虫の選択のみに使うようにして、検索時はこちらの作物・病害虫テーブルを使う方式に切り替えてしまってもいいんじゃないかな…。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.10.26 23:34 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
作物名、病害虫名のインデックスを作るのは若干時間がかかるので、インデックスを作らずに、新方式の検索を試してみました。
結果は、自宅マシンでインデックス有りが 0.16~0.19 秒、インデックス無しが 0.47~0.48 秒で、インデックス無しだと 2.5 倍程度遅くなりました。事務所マシンのように遅いと、インデックス無しだともっと時間がかかりそうです。

ということで、データベース更新時に若干時間がかかったとしても、やはり作物名、病害虫のインデックスは作成した方が良さそうですね。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.10.27 18:33
kabe  長老   投稿数: 231
私も似たようなことを考えていましたが、あくまでもコード番号を付ける方式でした。
データ更新時に、作物名テーブルを作成し、連番をIDとして作成する。
IDを m_tekiyo に書き戻す。これを作物名検索に使用する。
作物選択ダイアログでの選択用には、別に選択用のIDを作成する。これは現行のコードで、データ更新があった都度修正することになります。

sakumotsu フィールドにインデックスを作成するだけで、id が必要ないのであれば、それにこしたことはないですね。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.10.28 11:04
OhYeah!  管理人   投稿数: 983 オンライン
FAMIC からまだ返事は来ませんが、農薬登録情報(検索システム等)Q&A(平成22年10月25日現在)の Q16 を見る限り、Excel, CSV に作物コードを添付してもらえるとしてもまだまだ先になりそうです。その前に、農薬登録情報ダウンロードが現行システムから新システムに移行したりして
http://www.acis.famic.go.jp/index_kensaku_qa.htm#q16
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.10.30 22:28 | 最終変更
kabe  長老   投稿数: 231
10月27付けデータでまた検索漏れが発生しています。

連番方式コード付けの、以前のコードが残っていたので、作物コード、病害虫コード作成のルーチンを変更しました。

exe のみアップしてあります。
動作確認お願いします。
http://acfinder.kabe.info/acfinder.exe

作物選択、病害虫選択ダイアログでの選択には反映されていません。
こちらは FAMIC旧システム互換のコード表を acfinder サイトに置くようにしたいと思いますが、ライセンス上問題とかあるのかなあ。
投票数:3 平均点:3.33
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.10.31 00:45 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
下記のようなクエリーで確認してみました。
SELECT distinct extnum('', ifnullstr(idsaku, -1), -2) as ids FROM m_tekiyo order by ids;
SELECT distinct extnum('', ifnullstr(idbyochu, -1), -2) as idb FROM m_tekiyo order by idb;


idsaku は特に問題なさそうです。
idbyochu は -1 がいっぱいありますが、さらに調べてみたらもともと byochu フィールドが null の植調剤、展着剤、添加剤なので、病害虫の検索に問題はなさそうです。idbyochu が 1 がなくて 2 から始まっている理由はよく分かりませんが…。
投票数:2 平均点:5.00

なし ACFinder 101031test版

msg# 1.1.2.1.3.1.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.10.31 23:37 | 最終変更
kabe  長老   投稿数: 231
昨日のexe と同じですが、テスト版として公開しました。
http://acfinder.kabe.info/
投票数:2 平均点:5.00

なし FAMIC からの返信

msg# 1.1.2.1.5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.01 08:39 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
FAMIC から返事が来ましたが、作物・病害虫コードは従来から一般提供はしていないため、今後の検討課題とするということです。提供されるようになるにしても、数年先になりそうですね。
投票数:4 平均点:2.50
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.01 10:44 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
作物・病害虫コードがしばらくは提供されないことが判明したので、どうするか考えなくてはならないですね。

作物については、「(○○を除く)」以外の作物名が追加されることは滅多にないし、作物名選択の段階で「(○○を除く)」は不要なので、「農薬の登録申請に係る試験成績について」(平成12年11月24日付け12農産第8147号農林水産省農産園芸局長通知)の運用について(平成13年10月10日付け13生産第3986号農林水産省生産局生産資材課長通知)の別表1から独自に作るのはどうでしょう?
http://www.acis.famic.go.jp/shinsei/sakumotuhyou.htm

別表1には、作物の別名も記載されているので、別名やふりがなも含めた作物マスターを作れば、現在の辞書方式よりフリーワード検索がやりやすくなると思います。
問題は、別表1には「(露地栽培)」などの栽培条件がないので、今までのような施設栽培に使える農薬を検索したいといった用途で使いにくくなるところです。回避策としては、作物選択ダイアログボックスの「検索」タブを上位分類も含めて表示できるようにして代替する方法です。たとえば「きゅうり」などの作物名で検索したあと、「うり科野菜類」「きゅうり」「きゅうり(施設栽培)」をチェックしてもらうという感じです。この方法の場合、「ねぎ」で「根深ねぎ」も出てきてほしいので、最初の検索方法をちょっと変更する必要はありますね。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010.11.01 11:20 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
病害虫については、作物名よりも追加される頻度が高いので、20101031TEST 版の適用表から抽出したマスターテーブルを選択にもそのまま使用する方式でどうでしょうか?

この場合、病害虫選択ダイアログボックスは検索タブだけになり、今までのような「病害」「害虫」「雑草」といった種類別の選択、害虫のグループ別選択ができなくなるので、使い勝手は相当に悪くなりそうです。でも、病害虫タブを多用している人は少ないでしょうから、病害虫選択ダイアログボックスが検索タブだけになっても、まあ何とかなるのではないかと…。
投票数:1 平均点:10.00

なし Re: ACFinder 101031test版

msg# 1.1.2.1.3.1.1.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.01 16:29
kabe  長老   投稿数: 231
すいません。
101031test版
定型処理タブの病害虫選択ダイアログで、病害、虫害、雑草の絞り込みで SQLエラーが出ます。

あと並び替えも、文字コード順も ID順も同じになります。
まあ、これは文字コード順に並べたものに連番振っているだけなので、同じ結果になってしまいます。
投票数:7 平均点:1.43

なし Re: ACFinder 101031test版

msg# 1.1.2.1.3.1.1.1.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.01 18:31 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
引用:定型処理タブの病害虫選択ダイアログで、病害、虫害、雑草の絞り込みで SQLエラーが出ます。あれ? 気づかなかったなあ…。どんな条件で出ます?

引用:まあ、これは文字コード順に並べたものに連番振っているだけなので、同じ結果になってしまいます。この辺は、新病害虫マスターにあわせて変更していく必要がありますね。病害虫名に「(病|症|菌)」が存在すれば病害と判断して、病害と病害以外で分けて表示できるようにするとか…。
投票数:5 平均点:2.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010.11.01 19:20
OhYeah!  管理人   投稿数: 983 オンライン
http://www.o-ya.net/modules/d3forum/index.php?post_id=94
を書いている時に気づいたんですが、病害虫名マスターを作成する際に、病害・害虫・雑草の種別を保存するフィールドを作っておいて、下記のような方法で種別分けしておくと少しは使い勝手が良くなるかもです。
この程度の方法だと漏れが出たり、2重に登録されたりするかもしれませんが、ないよりは遥にいいかなあと…。検索方法はちょっと考えないと、このままじゃ遅くてしょうがないです。

select distinct byochu from m_tekiyo where byochu regexp '病|症|菌';
select distinct byochu from m_tekiyo join m_kihon using(bango) where yoto regexp '除草' and ifnullstr(byochu, '-') not regexp '病|症|菌|-';
select distinct byochu from m_tekiyo join m_kihon using(bango) where yoto regexp '殺虫' and ifnullstr(byochu, '-') not regexp '病|症|菌|草|藻|-';
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.01 22:29 | 最終変更
kabe  長老   投稿数: 231
ここはやはり、FAMIC旧システム互換のコード表を作成するのが、よさそうな気がします。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.02 00:22 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
FAMIC 互換なら害虫グループが使えるのが大きなメリットですが、新しい病害虫が追加された場合、誰かが手作業でメインテナンスしなければなりません。作物マスターは手作業でやるしかないのに、さらに病害虫マスターもってことになると、継続性を担保するのが難しくないですか?
病害・害虫・雑草・その他の分類コードを病害虫マスターに追加する程度ならマスター作成時に自動化できるので、害虫グループが使えなくなるデメリットと自動化の限界による分類間違いの発生には目をつぶっても、自動化できるところは自動化しておいた方がいいんじゃないかなあ…。

それと、FAMIC 互換なら、たとえばコナカイガラムシとカイガラムシはグループが違う(=適用上の対象病害虫が異なる)とか、キュウコンコナカイガラムシはコナカイガラムシという名前でもカイガラムシグループだということが分かります。逆に言うと、新たな害虫が追加されたときに、詳しい情報を提供されていない状況で FAMIC 互換のコード付けをするのはかなり困難と言わざるを得ません。その辺を JPP-NET のコードで毎回確認するなら、いっそのこと JPP-NET 互換のコード体系にした方が良さそうに思えます。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.02 02:03
OhYeah!  管理人   投稿数: 983 オンライン
引用:検索方法はちょっと考えないと、このままじゃ遅くてしょうがないです。新病害虫マスター案に移行するかどうかはともかくとして、検索が高速になれば、定型処理の病害虫ダイアログボックスで病害虫の種類別絞込に使えるかもしれないので、検索速度の向上にトライしてみました。結果は激速です(害虫は若干時間がかかります)。作物名で絞り込んだ後のテンポラリテーブルから検索するなら、もっと速いでしょう。

病害絞込
select distinct byochu from m_tekiyo where byochu like '%病%' or byochu like'%症%' or byochu like '%菌%';

雑草絞込
select distinct ifnullstr(byochu, '-') as byochu from m_tekiyo where bango in(select bango from m_kihon where yoto like '%除草%') and not(byochu like '%病%' or byochu like '%症%' or byochu like '%菌%' or byochu = '-');

害虫絞込
select distinct ifnullstr(byochu, '-') as byochu from m_tekiyo where bango in(select bango from m_kihon where yoto like '%殺虫%') and not(byochu like '%病%' or byochu like '%症%' or byochu like '%菌%' or byochu like '%草%' or byochu like '%藻%' or byochu = '-');
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.02 19:54
OhYeah!  管理人   投稿数: 983 オンライン
引用:検索が高速になれば、定型処理の病害虫ダイアログボックスで病害虫の種類別絞込に使えるかもしれない定型処理の病害虫ダイアログボックスでの絞込なら、病害については、下記の方が遥に高速ですね。

select distinct byochu from m_byochu where byochu like '%病%' or byochu like'%症%' or byochu like '%菌%';

それはそれとして、絞込時のみの使い捨て検索方式だと病害・害虫・雑草はある程度分類できても、害獣などその他の分類ができません。単純に絞込のみに使うにしても、やはり m_byochu に分類フィールドを追加しておいて、テーブル作成時に分類コードを入れちゃった方が良さそうです。
投票数:4 平均点:2.50
前の投稿 - 次の投稿 | 親投稿 - 子投稿.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
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.03 12:04 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
害獣例外処理の落ちがあったので、修正版です。

--/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;
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010.11.03 17:12 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
さらに、alias フィールドを追加して、既知の害虫グループについては別名として害虫グループ名を入れるようにしました。ただし、害虫グループの分類がちゃんとできているかどうかは検証していません。
害虫グループの登録に関しては、思ったより時間がかかりませんでした。

なお、害虫名では「イネアオムシ」、「ワタヘリクロノメイガ」を別名として追加しています。病害名では、晩腐病のみ別名を登録しています。雑草の地方名なども別名に追加すると良いかもしれません。

--/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, alias varchar);
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 = 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 = 3 where byochu like '%ナメクジ';
update m_byochu set cid = 4 where byochu in ('イノシシ', 'カモシカ', 'ニホンジカ', 'モグラ', '野ウサギ', '野ソ', '害獣');
--害虫G優先処理1
update m_byochu set alias = 'アリG' where cid = 3 and byochu like '%アリ%';
update m_byochu set alias = 'ケラG' where cid = 3 and byochu like '%ケラ%';
update m_byochu set alias = 'コガG' where cid = 3 and byochu like '%コガ%';
update m_byochu set alias = 'セミG' where cid = 3 and byochu like '%ゼミ%';
update m_byochu set alias = 'ダニG' where cid = 3 and byochu like '%ダニ%';
update m_byochu set alias = 'ヤガG' where cid = 3 and byochu like '%ヤガ%';
--害虫G優先処理2
update m_byochu set alias = 'スズメガG' where cid = 3 and byochu like '%スズメ%';
update m_byochu set alias = 'アゲハG' where byochu like '%アゲハ%';
update m_byochu set alias = 'ケムシG' where byochu like '%ケムシ%';
update m_byochu set alias = 'イラガG' where byochu like '%イラガ%';
update m_byochu set alias = 'ウスバG' where byochu like '%ウスバ%';
update m_byochu set alias = 'ウンカG' where byochu like '%ウンカ%';
update m_byochu set alias = 'カレハガG' where byochu like '%カレハ%';
update m_byochu set alias = 'キバチG' where byochu like '%キバチ%';
update m_byochu set alias = 'シジミチョウG' where byochu like '%シジミ%';
update m_byochu set alias = 'シャクガG' where byochu like '%シャク%';
update m_byochu set alias = 'チビガG' where byochu like '%チビガ%';
update m_byochu set alias = 'トラガG' where byochu like '%トラガ%';
update m_byochu set alias = 'トリバガG' where byochu like '%トリバ%';
update m_byochu set alias = 'ネダニG' where byochu like '%ネダニ%';
update m_byochu set alias = 'ハダニG' where byochu like '%ハダニ%';
update m_byochu set alias = 'ハバチG' where byochu like '%ハバチ%';
update m_byochu set alias = 'ハムシG' where byochu like '%ハムシ%';
update m_byochu set alias = 'ヒトリガG' where byochu like '%ヒトリ%';
update m_byochu set alias = 'ミバエG' where byochu like '%ミバエ%';
update m_byochu set alias = 'ヨトウG' where byochu like '%ヨトウ%';
update m_byochu set alias = 'イナゴ・バッタG' where byochu like '%イナゴ%' or byochu like '%バッタ%';
update m_byochu set alias = 'ウワバG' where byochu like '%ウワバ%' or byochu like '%シタバ%' or byochu like '%キノカワガ' or byochu like '%ツメクサガ';
update m_byochu set alias = 'コガネムシ・ブイブイG' where byochu like '%コガネ%' or byochu like '%ドウガネ%' or byochu like 'ハナムグリ' or byochu like '%ブイブイ%';
update m_byochu set alias = 'コナガ・スガG' where byochu like '%コナガ%' or byochu like '%スムシ%' ;
update m_byochu set alias = 'ミノガ・ミノムシG' where byochu like '%ミノガ%' or byochu like '%ミノムシ%' ;
update m_byochu set alias = 'ツトガG' where byochu like '%ツトガ%' or byochu like '%ツトムシ%';
update m_byochu set alias = 'メイガG' where byochu like '%メイガ%' or byochu like '%メイチュウ%' or byochu like '%ツヅリガ%';
update m_byochu set alias = 'ホソガ・カワモグリG' where byochu like '%ホソガ%' or byochu like '%カワモグリ%'; -- ハマキガより前に実行
update m_byochu set alias = 'シンクイガ・シンクイムシG' where byochu like '%シンクイ%'; -- キクイムシより前に実行
update m_byochu set alias = 'ハマキガG' where byochu like '%ハマキ%' or byochu like '%サヤムシ%' or byochu like '%カワモグリガ%'; -- ハマキモドキより前に実行
update m_byochu set alias = 'マイマイ・カタツムリG' where byochu like '%マイマイ%' or byochu like '%カタツムリ%'; -- マイマイガより前に実行
update m_byochu set alias = 'マイマイ・ドクガG' where byochu like '%ドクガ%' or byochu like '%マイマイガ%';
--別名優先処理3
update m_byochu set alias = 'カメムシG' where byochu like '%カメムシ%'; -- ナガカメムシより前に実行
update m_byochu set alias = 'ゾウムシG' where byochu like '%ゾウムシ%'; -- チョッキリより前に実行
update m_byochu set alias = 'テントウムシG' where byochu like '%テントウ%'; -- テントウムシダマシより前に実行
update m_byochu set alias = 'ハモグリガG' where byochu like '%ハモグリ%'; -- ハモグリバエより前に実行
update m_byochu set alias = 'アブラムシG' where byochu like '%アブラムシ%' or byochu like '%ワタムシ%'; -- ネアブラムシ、タマワタムシより前に実行
update m_byochu set alias = 'カイガラムシG' where byochu like '%カイガラムシ%'; -- コナカイガラムシ、ロウカイガラムシより前に実行
--害虫G通常処理
update m_byochu set alias = 'アオムシG' where byochu like '%アオムシ%';
update m_byochu set alias = 'ジャガイモガ・イモコガG' where byochu like '%イモコガ%' or byochu like '%ジャガイモガ%';
update m_byochu set alias = 'ガガンボG' where byochu like '%ガガンボ%';
update m_byochu set alias = 'カミキリムシG' where byochu like '%カミキリ%' or byochu like '%マツクイムシ%';
update m_byochu set alias = 'ハモグリバエ・キモグリバエ・カラバエ・ミギワバエG' where byochu like '%カラバエ%' or byochu like '%キノコバエ%' or byochu like '%モグリバエ%' or byochu like '%ショウジョウバエ%';
update m_byochu set alias = 'キジラミG' where byochu like '%キジラミ%';
update m_byochu set alias = 'クスサンG' where byochu like '%クスサン%';
update m_byochu set alias = 'グンバイムシG' where byochu like '%グンバイ%';
update m_byochu set alias = 'コオロギ・カネタタキG' where byochu like '%コオロギ%' or byochu like '%カネタタキ%';
update m_byochu set alias = 'コナダニG' where byochu like '%コナダニ%';
update m_byochu set alias = 'コメツキムシG' where byochu like '%コメツキ%' or byochu like '%ハリガネムシ%';
update m_byochu set alias = 'サビダニG' where byochu like '%サビダニ%';
update m_byochu set alias = 'スカシバG' where byochu like '%スカシバ%';
update m_byochu set alias = 'タネバエ・ハナバエG' where byochu like '%タネバエ%' or byochu like 'ハナバエ';
update m_byochu set alias = 'ヤガG' where byochu like '%タバコガ%' or byochu like '%ネキリムシ%';
update m_byochu set alias = 'タマバエG' where byochu like '%タマバエ%';
update m_byochu set alias = 'タマバチG' where byochu like '%タマバチ%';
update m_byochu set alias = 'タマムシG' where byochu like '%タマムシ%';
update m_byochu set alias = 'トビムシG' where byochu like '%トビムシ%';
update m_byochu set alias = 'ナメクジG' where byochu like '%ナメクジ%';
update m_byochu set alias = 'ヨコバイG' where byochu like '%ヨコバイ%';
update m_byochu set alias = 'ハゴロモG' where byochu like '%ハゴロモ%';
update m_byochu set alias = 'カキヘタノムシガ・マイコガG' where byochu like '%マイコガ%' or byochu like '%カキヘタノムシガ%';
update m_byochu set alias = 'ムギダニG' where byochu like '%ムギダニ%';
update m_byochu set alias = 'ロウムシ・ロウカイガラムシG' where byochu like '%ロウムシ%' or '%ロウカイガラムシ%';
update m_byochu set alias = 'アザミウマG' where byochu like '%アザミウマ%';
update m_byochu set alias = 'カスミカメG' where byochu like '%カスミカメ%';
update m_byochu set alias = 'カブトムシG' where byochu like '%カブトムシ%';
update m_byochu set alias = 'キクイムシG' where byochu like '%キクイムシ%' or byochu like '%ヒメコシンクイ%';
update m_byochu set alias = 'ケシキスイG' where byochu like '%ケシキスイ%';
update m_byochu set alias = 'コウモリガG' where byochu like '%コウモリガ%';
update m_byochu set alias = 'コナジラミG' where byochu like '%コナジラミ%';
update m_byochu set alias = 'ホコリダニG' where byochu like '%ホコリダニ%';
update m_byochu set alias = 'シバンムシG' where byochu like '%シバンムシ%';
update m_byochu set alias = 'シャチホコガG' where byochu like '%シャチホコ%';
update m_byochu set alias = 'センチュウG' where byochu like '%センチュウ%';
update m_byochu set alias = 'タネコバチG' where byochu like '%タネコバチ%';
update m_byochu set alias = 'ダンゴムシG' where byochu like '%ダンゴムシ%';
update m_byochu set alias = 'チョッキリG' where byochu like '%チョッキリ%';
update m_byochu set alias = 'ハンミョウG' where byochu like '%ハンミョウ%';
update m_byochu set alias = 'ヒラタムシG' where byochu like '%ヒラタムシ%';
update m_byochu set alias = 'ヒロズコガG' where byochu like '%ヒロズコガ%';
update m_byochu set alias = 'リンゴガイG' where byochu like '%リンゴガイ%';
update m_byochu set alias = 'タマワタムシG' where byochu like '%タマワタムシ%';
update m_byochu set alias = 'ナガカメムシG' where byochu like '%ナガカメムシ%';
update m_byochu set alias = 'ハマキモドキG' where byochu like '%ハマキモドキ%';
update m_byochu set alias = 'ネアブラムシG' where byochu like '%ネアブラムシ%';
update m_byochu set alias = 'コナカイガラムシG' where byochu like '%コナカイガラムシ%';
update m_byochu set alias = 'クロバネキノコバエG' where byochu like '%クロバネキノコバエ%';
update m_byochu set alias = 'テントウムシダマシG' where byochu like '%テントウムシダマシ%' or byochu like '%ニジュウヤホシテントウ%';
--害虫G例外処理
update m_byochu set alias = 'アリG' where byochu = 'アイノキクイムシ';
update m_byochu set alias = 'カイガラムシG' where byochu = 'キュウコンコナカイガラムシ';
update m_byochu set alias = 'カスミカメG' where byochu like '%コバネナガガメムシ';
update m_byochu set alias = 'カメムシG' where byochu = 'ウスモンミドリカスミカメ';
update m_byochu set alias = 'タネバエ・ハナバエG' where byochu in ('ダイコンバエ', 'タマネギバエ');
update m_byochu set alias = 'タマワタムシG' where byochu = 'リンゴワタムシ';
update m_byochu set alias = 'トビムシG' where byochu = 'クワシロドクガ';
update m_byochu set alias = 'ネアブラムシG' where byochu = 'クリイガアブラムシ';
update m_byochu set alias = 'ハマキガG' where byochu in ('イグサシンムシガ', 'クリミガ');
update m_byochu set alias = 'ヒラタムシG' where byochu = 'カキミガ';
update m_byochu set alias = 'マイマイ・ドクガG' where byochu = 'ハラアカマイマイガ';
update m_byochu set alias = 'ヤガG' where byochu in ('タバコアオムシ', 'ナシケンモン', 'ベニモンアオリガ', 'ムラサキアシブト');
update m_byochu set alias = '' where cid = 3 and byochu like '%、%';
--害虫別名追加
update m_byochu set alias = concat(',', alias, 'イネアオムシ') where byochu = 'フタオビコヤガ';
update m_byochu set alias = concat(',', alias, 'ワタヘリクロノメイガ') where byochu = 'ウリノメイガ';
--病害別名追加
update m_byochu set alias = concat(',', alias, 'バンプビョウ') where byochu like '晩腐病%';
commit;
drop table if exists t_byochu;
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.03 18:34
OhYeah!  管理人   投稿数: 983 オンライン
ふりがなや別名は検索時に、害虫グループは絞込時に使用するので、alias フィールドにふりがなと別名を入れて、害虫グループは gid フィールドに ID で入れるようにした方が使いやすいですね。
あと、害虫グループの分類に意外に時間がかからなかったので、ふりがなをつけるのも SQLite だけで実用的な時間でいけるかもしれません。SQLite 側だけで実装可能なら、ACFinder のリコンパイルが不要になります。

ってことで、ACFinder 側でのふりがな付けはちょっとお待ちください。害虫グループ付きの m_byochu に基づいたシステム変更もまだしないでください。
投票数:23 平均点:0.43

なし Re: 分類付き m_byochu

msg# 1.3.2.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2010.11.03 21:20 | 最終変更
kabe  長老   投稿数: 231
途中まで作業を進めています。

「ハダニ類」が雑草に分類されてしまいますね。

idbyochu はソートに使うことも考慮すると cid + 連番にして、m_tekiyo に書き戻した方が使いやすそうです。

投票数:2 平均点:5.00

なし Re: 分類付き m_byochu

msg# 1.3.2.1.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.03 22:01 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
引用:「ハダニ類」が雑草に分類されてしまいますね。ホントだ。ハービエース水溶剤のせいですね。「ナミハダニ」も雑草になってしまいます。もう生産してないような話を聞いてますが、登録が残っている間は例外処理するしかないですね。

引用:idbyochu はソートに使うことも考慮すると cid + 連番にして、m_tekiyo に書き戻した方が使いやすそうです。いや、逆に全部を表示している時は、idbyochu は読み順の方が分かりやすいような感じがしますが…。cid + 連番にするなら、病害 = 1、害虫 = 2、雑草 = 3、鳥獣 = 4、その他 = 5 にするかな。
投票数:2 平均点:5.00

なし Re: 分類付き m_byochu

msg# 1.3.2.1.1.2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.03 22:45 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
修正版です。'%活性化%' とすべきところが '活性化%' となっていたのも直しました。

--/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, 5 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 = 2 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 '%雑草%' or byochu in (select distinct byochu from m_tekiyo where bango in (select bango from m_kihon where yoto = '除草剤'));
update m_byochu set cid = 1 where byochu like '%病%' or byochu like'%症%' or byochu like '%菌%' or byochu like '%腐%' or byochu like '%タケ';
update m_byochu set cid = 5 where byochu like '%活性化%' or byochu like '%覚醒%';
--分類例外処理
update m_byochu set cid = 2 where byochu like '%ナメクジ' or byochu like '%ハダニ%';
update m_byochu set cid = 4 where byochu in ('イノシシ', 'カモシカ', 'ニホンジカ', 'モグラ', '野ウサギ', '野ソ', '害獣');
commit;
drop table if exists t_byochu;
投票数:2 平均点:5.00

なし Re: 分類付き m_byochu

msg# 1.3.2.1.1.2.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.03 23:59
OhYeah!  管理人   投稿数: 983 オンライン
さらに、cid を間違えないようにしました。

まず、これで spec.cbyochu テーブルを作成します。cid は自由に付け直しても大丈夫です。
--/d
drop table if exists spec.cbyochu;
create table spec.cbyochu (cid integer primary key, cname varchar unique);
begin transaction;
insert into spec.cbyochu values(1, '病害');
insert into spec.cbyochu values(2, '害虫');
insert into spec.cbyochu values(3, '雑草');
insert into spec.cbyochu values(4, '鳥獣');
insert into spec.cbyochu values(5, 'その他');
commit;

次に、これで m_byochu テーブルを作成します。
--/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, (select cid from spec.cbyochu where cname = 'その他') as cid from t_byochu where ifnullstr(byochu, '-') != '-';
--分類処理
update m_byochu set cid = (select cid from spec.cbyochu where cname = '鳥獣') 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 = (select cid from spec.cbyochu where cname = '害虫') 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 = (select cid from spec.cbyochu where cname = '雑草') 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 = (select cid from spec.cbyochu where cname = '病害') where byochu like '%病%' or byochu like'%症%' or byochu like '%菌%' or byochu like '%腐%' or byochu like '%タケ';
update m_byochu set cid = (select cid from spec.cbyochu where cname = 'その他') where byochu like '%活性化%' or byochu like '%覚醒%';
--分類例外処理
update m_byochu set cid = (select cid from spec.cbyochu where cname = '害虫') where byochu like '%ナメクジ' or byochu like '%ハダニ%';
update m_byochu set cid = (select cid from spec.cbyochu where cname = '鳥獣') where byochu in ('イノシシ', 'カモシカ', 'ニホンジカ', 'モグラ', '野ウサギ', '野ソ', '害獣');
commit;
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010.11.04 00:39 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
まずは、害虫グループマスターの spec.ggaichu です。m_byochu では、ここから gid のみ貼り付けます。

2010.11.4 9:24 追記
グループ名に「複数害虫」と「グループ無し」を追加しました。

--/d
drop table if exists spec.ggaichu;
create table spec.ggaichu (gid integer primary key autoincrement, gname varchar unique);
begin transaction;
insert into spec.ggaichu (gname) values ('アオムシG');
insert into spec.ggaichu (gname) values ('アゲハG');
insert into spec.ggaichu (gname) values ('アザミウマG');
insert into spec.ggaichu (gname) values ('アブラムシG');
insert into spec.ggaichu (gname) values ('アリG');
insert into spec.ggaichu (gname) values ('イナゴ・バッタG');
insert into spec.ggaichu (gname) values ('イラガG');
insert into spec.ggaichu (gname) values ('ウスバG');
insert into spec.ggaichu (gname) values ('ウワバG');
insert into spec.ggaichu (gname) values ('ウンカG');
insert into spec.ggaichu (gname) values ('カイガラムシG');
insert into spec.ggaichu (gname) values ('カキヘタノムシガ・マイコガG');
insert into spec.ggaichu (gname) values ('カスミカメG');
insert into spec.ggaichu (gname) values ('カブトムシG');
insert into spec.ggaichu (gname) values ('カミキリムシG');
insert into spec.ggaichu (gname) values ('カメムシG');
insert into spec.ggaichu (gname) values ('カレハガG');
insert into spec.ggaichu (gname) values ('ガガンボG');
insert into spec.ggaichu (gname) values ('キクイムシG');
insert into spec.ggaichu (gname) values ('キジラミG');
insert into spec.ggaichu (gname) values ('クスサンG');
insert into spec.ggaichu (gname) values ('クロバネキノコバエG');
insert into spec.ggaichu (gname) values ('グンバイムシG');
insert into spec.ggaichu (gname) values ('ケシキスイG');
insert into spec.ggaichu (gname) values ('ケムシG');
insert into spec.ggaichu (gname) values ('ケラG');
insert into spec.ggaichu (gname) values ('コウモリガG');
insert into spec.ggaichu (gname) values ('コオロギ・カネタタキG');
insert into spec.ggaichu (gname) values ('コガネムシ・ブイブイG');
insert into spec.ggaichu (gname) values ('コガG');
insert into spec.ggaichu (gname) values ('コナカイガラムシG');
insert into spec.ggaichu (gname) values ('コナガ・スガG');
insert into spec.ggaichu (gname) values ('コナジラミG');
insert into spec.ggaichu (gname) values ('コナダニG');
insert into spec.ggaichu (gname) values ('コメツキムシG');
insert into spec.ggaichu (gname) values ('サビダニG');
insert into spec.ggaichu (gname) values ('シジミチョウG');
insert into spec.ggaichu (gname) values ('シバンムシG');
insert into spec.ggaichu (gname) values ('シャクガG');
insert into spec.ggaichu (gname) values ('シャチホコガG');
insert into spec.ggaichu (gname) values ('シンクイガ・シンクイムシG');
insert into spec.ggaichu (gname) values ('ジャガイモガ・イモコガG');
insert into spec.ggaichu (gname) values ('スカシバG');
insert into spec.ggaichu (gname) values ('スズメガG');
insert into spec.ggaichu (gname) values ('セミG');
insert into spec.ggaichu (gname) values ('センチュウG');
insert into spec.ggaichu (gname) values ('ゾウムシG');
insert into spec.ggaichu (gname) values ('タネコバチG');
insert into spec.ggaichu (gname) values ('タネバエ・ハナバエG');
insert into spec.ggaichu (gname) values ('タマバエG');
insert into spec.ggaichu (gname) values ('タマバチG');
insert into spec.ggaichu (gname) values ('タマムシG');
insert into spec.ggaichu (gname) values ('タマワタムシG');
insert into spec.ggaichu (gname) values ('ダンゴムシG');
insert into spec.ggaichu (gname) values ('チビガG');
insert into spec.ggaichu (gname) values ('チョッキリG');
insert into spec.ggaichu (gname) values ('ツトガG');
insert into spec.ggaichu (gname) values ('テントウムシダマシG');
insert into spec.ggaichu (gname) values ('テントウムシG');
insert into spec.ggaichu (gname) values ('トビムシG');
insert into spec.ggaichu (gname) values ('トラガG');
insert into spec.ggaichu (gname) values ('トリバガG');
insert into spec.ggaichu (gname) values ('ナガカメムシG');
insert into spec.ggaichu (gname) values ('ナメクジG');
insert into spec.ggaichu (gname) values ('ネアブラムシG');
insert into spec.ggaichu (gname) values ('ネダニG');
insert into spec.ggaichu (gname) values ('ハゴロモG');
insert into spec.ggaichu (gname) values ('ハダニG');
insert into spec.ggaichu (gname) values ('ハバチG');
insert into spec.ggaichu (gname) values ('ハマキガG');
insert into spec.ggaichu (gname) values ('ハムシG');
insert into spec.ggaichu (gname) values ('ハモグリガG');
insert into spec.ggaichu (gname) values ('ハモグリバエ・キモグリバエ・カラバエ・ミギワバエG');
insert into spec.ggaichu (gname) values ('ハンミョウG');
insert into spec.ggaichu (gname) values ('ヒトリガG');
insert into spec.ggaichu (gname) values ('ヒラタムシG');
insert into spec.ggaichu (gname) values ('ヒロズコガG');
insert into spec.ggaichu (gname) values ('ホコリダニG');
insert into spec.ggaichu (gname) values ('ホソガ・カワモグリG');
insert into spec.ggaichu (gname) values ('マイマイ・カタツムリG');
insert into spec.ggaichu (gname) values ('マイマイ・ドクガG');
insert into spec.ggaichu (gname) values ('ミノガ・ミノムシG');
insert into spec.ggaichu (gname) values ('ミバエG');
insert into spec.ggaichu (gname) values ('ムギダニG');
insert into spec.ggaichu (gname) values ('メイガG');
insert into spec.ggaichu (gname) values ('ヤガG');
insert into spec.ggaichu (gname) values ('ヨコバイG');
insert into spec.ggaichu (gname) values ('ヨトウG');
insert into spec.ggaichu (gname) values ('リンゴガイG');
insert into spec.ggaichu (gname) values ('ロウムシ・ロウカイガラムシG');
insert into spec.ggaichu (gname) values ('複数害虫');
insert into spec.ggaichu (gname) values ('グループ無し');
commit;
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.04 00:43 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
害虫グループ付きの m_byouchu です。グループ分けがちゃんとできているかどうかは、例によって検証していません。1か所、'%ハナバエ%' とすべきところが 'ハナバエ' になっていたのは修正しました。
また、ふりがな機能が未実装なので、今回は別名登録はしていません。

2010.11.4 9:30
「グループ無し」の処理を追加、複数害虫の処理変更

--/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, gid integer);
begin transaction;
insert into m_byochu (byochu, cid) select byochu, (select cid from spec.cbyochu where cname = 'その他') as cid from t_byochu where ifnullstr(byochu, '-') != '-';
--分類処理
update m_byochu set cid = (select cid from spec.cbyochu where cname = '鳥獣') 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 = (select cid from spec.cbyochu where cname = '害虫') 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 = (select cid from spec.cbyochu where cname = '雑草') 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 = (select cid from spec.cbyochu where cname = '病害') where byochu like '%病%' or byochu like'%症%' or byochu like '%菌%' or byochu like '%腐%' or byochu like '%タケ';
update m_byochu set cid = (select cid from spec.cbyochu where cname = 'その他') where byochu like '%活性化%' or byochu like '%覚醒%';
--分類例外処理
update m_byochu set cid = (select cid from spec.cbyochu where cname = '害虫') where byochu like '%ナメクジ' or byochu like '%ハダニ%';
update m_byochu set cid = (select cid from spec.cbyochu where cname = '鳥獣') where byochu in ('イノシシ', 'カモシカ', 'ニホンジカ', 'モグラ', '野ウサギ', '野ソ', '害獣');
--害虫G初期化
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'グループ無し') where cid = (select cid from spec.cbyochu where cname = '害虫');
--害虫G優先処理1
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'アリG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%アリ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ケラG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%ケラ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コガG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%コガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'セミG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%ゼミ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ダニG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%ダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヤガG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%ヤガ%';
--害虫G優先処理2
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'スズメガG') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%スズメ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'アゲハG') where byochu like '%アゲハ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ケムシG') where byochu like '%ケムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'イラガG') where byochu like '%イラガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ウスバG') where byochu like '%ウスバ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ウンカG') where byochu like '%ウンカ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カレハガG') where byochu like '%カレハ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'キバチG') where byochu like '%キバチ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'シジミチョウG') where byochu like '%シジミ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'シャクガG') where byochu like '%シャク%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'チビガG') where byochu like '%チビガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'トラガG') where byochu like '%トラガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'トリバガG') where byochu like '%トリバ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ネダニG') where byochu like '%ネダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハダニG') where byochu like '%ハダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハバチG') where byochu like '%ハバチ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハムシG') where byochu like '%ハムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヒトリガG') where byochu like '%ヒトリ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ミバエG') where byochu like '%ミバエ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヨトウG') where byochu like '%ヨトウ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'イナゴ・バッタG') where byochu like '%イナゴ%' or byochu like '%バッタ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ウワバG') where byochu like '%ウワバ%' or byochu like '%シタバ%' or byochu like '%キノカワガ' or byochu like '%ツメクサガ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コガネムシ・ブイブイG') where byochu like '%コガネ%' or byochu like '%ドウガネ%' or byochu like 'ハナムグリ' or byochu like '%ブイブイ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コナガ・スガG') where byochu like '%コナガ%' or byochu like '%スムシ%' ;
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ミノガ・ミノムシG') where byochu like '%ミノガ%' or byochu like '%ミノムシ%' ;
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ツトガG') where byochu like '%ツトガ%' or byochu like '%ツトムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'メイガG') where byochu like '%メイガ%' or byochu like '%メイチュウ%' or byochu like '%ツヅリガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ホソガ・カワモグリG') where byochu like '%ホソガ%' or byochu like '%カワモグリ%'; -- ハマキガより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'シンクイガ・シンクイムシG') where byochu like '%シンクイ%'; -- キクイムシより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハマキガG') where byochu like '%ハマキ%' or byochu like '%サヤムシ%' or byochu like '%カワモグリガ%'; -- ハマキモドキより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'マイマイ・カタツムリG') where byochu like '%マイマイ%' or byochu like '%カタツムリ%'; -- マイマイガより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'マイマイ・ドクガG') where byochu like '%ドクガ%' or byochu like '%マイマイガ%';
--別名優先処理3
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カメムシG') where byochu like '%カメムシ%'; -- ナガカメムシより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ゾウムシG') where byochu like '%ゾウムシ%'; -- チョッキリより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'テントウムシG') where byochu like '%テントウ%'; -- テントウムシダマシより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハモグリガG') where byochu like '%ハモグリ%'; -- ハモグリバエより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'アブラムシG') where byochu like '%アブラムシ%' or byochu like '%ワタムシ%'; -- ネアブラムシ、タマワタムシより前に実行
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カイガラムシG') where byochu like '%カイガラムシ%'; -- コナカイガラムシ、ロウカイガラムシより前に実行
--害虫G通常処理
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'アオムシG') where byochu like '%アオムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ジャガイモガ・イモコガG') where byochu like '%イモコガ%' or byochu like '%ジャガイモガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ガガンボG') where byochu like '%ガガンボ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カミキリムシG') where byochu like '%カミキリ%' or byochu like '%マツクイムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハモグリバエ・キモグリバエ・カラバエ・ミギワバエG') where byochu like '%カラバエ%' or byochu like '%キノコバエ%' or byochu like '%モグリバエ%' or byochu like '%ショウジョウバエ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'キジラミG') where byochu like '%キジラミ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'クスサンG') where byochu like '%クスサン%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'グンバイムシG') where byochu like '%グンバイ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コオロギ・カネタタキG') where byochu like '%コオロギ%' or byochu like '%カネタタキ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コナダニG') where byochu like '%コナダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コメツキムシG') where byochu like '%コメツキ%' or byochu like '%ハリガネムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'サビダニG') where byochu like '%サビダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'スカシバG') where byochu like '%スカシバ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タネバエ・ハナバエG') where byochu like '%タネバエ%' or byochu like '%ハナバエ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヤガG') where byochu like '%タバコガ%' or byochu like '%ネキリムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タマバエG') where byochu like '%タマバエ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タマバチG') where byochu like '%タマバチ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タマムシG') where byochu like '%タマムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'トビムシG') where byochu like '%トビムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ナメクジG') where byochu like '%ナメクジ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヨコバイG') where byochu like '%ヨコバイ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハゴロモG') where byochu like '%ハゴロモ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カキヘタノムシガ・マイコガG') where byochu like '%マイコガ%' or byochu like '%カキヘタノムシガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ムギダニG') where byochu like '%ムギダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ロウムシ・ロウカイガラムシG') where byochu like '%ロウムシ%' or '%ロウカイガラムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'アザミウマG') where byochu like '%アザミウマ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カスミカメG') where byochu like '%カスミカメ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カブトムシG') where byochu like '%カブトムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'キクイムシG') where byochu like '%キクイムシ%' or byochu like '%ヒメコシンクイ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ケシキスイG') where byochu like '%ケシキスイ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コウモリガG') where byochu like '%コウモリガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コナジラミG') where byochu like '%コナジラミ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ホコリダニG') where byochu like '%ホコリダニ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'シバンムシG') where byochu like '%シバンムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'シャチホコガG') where byochu like '%シャチホコ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'センチュウG') where byochu like '%センチュウ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タネコバチG') where byochu like '%タネコバチ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ダンゴムシG') where byochu like '%ダンゴムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'チョッキリG') where byochu like '%チョッキリ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハンミョウG') where byochu like '%ハンミョウ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヒラタムシG') where byochu like '%ヒラタムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヒロズコガG') where byochu like '%ヒロズコガ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'リンゴガイG') where byochu like '%リンゴガイ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タマワタムシG') where byochu like '%タマワタムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ナガカメムシG') where byochu like '%ナガカメムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハマキモドキG') where byochu like '%ハマキモドキ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ネアブラムシG') where byochu like '%ネアブラムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'コナカイガラムシG') where byochu like '%コナカイガラムシ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'クロバネキノコバエG') where byochu like '%クロバネキノコバエ%';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'テントウムシダマシG') where byochu like '%テントウムシダマシ%' or byochu like '%ニジュウヤホシテントウ%';
--害虫G例外処理
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'アリG') where byochu = 'アイノキクイムシ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カイガラムシG') where byochu = 'キュウコンコナカイガラムシ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カスミカメG') where byochu like '%コバネナガガメムシ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'カメムシG') where byochu = 'ウスモンミドリカスミカメ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タネバエ・ハナバエG') where byochu in ('ダイコンバエ', 'タマネギバエ');
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'タマワタムシG') where byochu = 'リンゴワタムシ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'トビムシG') where byochu = 'クワシロドクガ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ネアブラムシG') where byochu = 'クリイガアブラムシ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ハマキガG') where byochu in ('イグサシンムシガ', 'クリミガ');
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヒラタムシG') where byochu = 'カキミガ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'マイマイ・ドクガG') where byochu = 'ハラアカマイマイガ';
update m_byochu set gid = (select gid from spec.ggaichu where gname = 'ヤガG') where byochu in ('タバコアオムシ', 'ナシケンモン', 'ベニモンアオリガ', 'ムラサキアシブト');
update m_byochu set gid = (select gid from spec.ggaichu where gname = '複数害虫') where cid = (select cid from spec.cbyochu where cname = '害虫') and byochu like '%、%';
commit;
drop table if exists t_byochu;
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.04 23:10
kabe  長老   投稿数: 231
いつの間にか、こんなページができていますね。
http://www.acis.famic.go.jp/ddata/sakumotugainen.htm

コードはついていませんが、公にされている上位分類判定のソースにはなります。
ただ、これをどうやってデータベースに格納したらよいものやら・・・・
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.05 00:31
OhYeah!  管理人   投稿数: 983 オンライン
う~む、これって新しい作物区分が追加される度に更新されるのかなあ? 旧システムの適用表と違って、無駄な colspan はあっても rowspan がないので、perl か php で階層毎に spec.cbyodhu, spec.ggaichu のような分類テーブルを作成するためのクエリを自動生成するフィルタを割と簡単に作れそうな感じがします。ACFinder 側は、それを受け取って使うってのはどうでしょう?

話は変わりますが、m_byochu のルビ付けも、gid 処理と同様に意外に短時間で処理できそうな感じです。が、本格的に作業を初めようと思ってハタと気がついたんですが、SQLite にはひらがなをカタカナに変換するような関数がありません。しょうがないので、現在 SQLiteEx.pas に文字種変換をする convstr 関数を追加しているところです。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.08 23:40
OhYeah!  管理人   投稿数: 983 オンライン
現在、来年度の防除基準を作成しているところですが、病害虫名に「ハイマダラノメイガ」と「ダイコンシンクイムシ」の両方が存在するので FAMIC に確認したら、ハイマダラノメイガへの移行中で混在しているってことでした。
しかし、旧システムの害虫グループを確認すると、ハイマダラメイガは「メイガG」、ダイコンシンクイムシは「シンクイガ・シンクイムシG」とグループが異なります。FAMIC のグループ分けも結構いい加減ですね。ツトガ科・メイガ科とハマキガ科・ナガシンクイ科・シンクイガ科で分けるてるなら、ダイコンシンクイムシはメイガGが正しいのかな?
投票数:1 平均点:0.00

なし Re: 分類付き m_byochu

msg# 1.3.2.1.1.3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010.11.10 00:30 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
引用:idbyochu はソートに使うことも考慮すると cid + 連番にして、m_tekiyo に書き戻した方が使いやすそうです。ああ、そうか。定型処理タブの病害虫ダイアログのように、ID 順や文字コード順で表示する際の話ですね。これって、m_kihon の構造は変えずに、m_byochu を left join して並べ替えるってのはどうでしょう?

SELECT DISTINCT a.byochu FROM m_tekiyo as a left join m_byochu using(idbyochu) where sakumotsu like 'きゅうり%' order by cid, gid, idbyochu;
これを実際にやってみて気づいたんですが、最初に文字コード順に連番を振ると、cid, gid で並べ替えても「オンシツコナジラミ」「オンシツコナジラミ幼虫」「コナジラミ類」の順になってしまいますね。これは、できれば「コナジラミ類」「オンシツコナジラミ」「オンシツコナジラミ幼虫」の順に出て欲しいところ…。
とはいえ、これを自動的に判断させるのはかなり難しそう。kabe さんが FAMIC 互換のコードを使いたいと書いてた理由がようやく分かりました。
投票数:2 平均点:5.00

なし Re: 分類付き m_byochu

msg# 1.3.2.1.1.3.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010.11.10 09:14
OhYeah!  管理人   投稿数: 983 オンライン
引用:とはいえ、これを自動的に判断させるのはかなり難しそう。m_byochu に gid2 を作って、gid > 0 のものだけ、'類' を含む場合は gid2 = 1、含まなければ gid2 = 2 にします。で、ソートするときに、
order by cid, gid, gid2, idbyochu;
にすれば、最初に「コナジラミ類」が表示されるようになりますね。
FAMIC 互換コードと違って、ACFinder 側のコード書き換えは避けられません。が、文字コード順は
order by idbyochu;
ですみます。

コード体系が変わることで一番影響を受けるのは、病害虫タブの病害虫選択ダイアログボックスですが、特に問題となる 50 音タブは階層が深すぎて決して使いやすくないので、廃止しても良いかなあ…。その代わり、検索タブに検索タイプ(部分一致、先頭一致、後方一致)と病害虫雑草等カテゴリの選択コンボボックスを追加するってのはどうでしょう?
たとえば、「先頭一致」「害虫」にして検索語を「あ」で検索すると、「あ」で始まる害虫が表示されるってな具合です。ACFinder 側にかなり手を入れる必要がありますが、ユーザは 50 音タブより遥に使いやすくなるのではないかと…。
投票数:2 平均点:5.00

  条件検索へ