ACFinder 病害虫タブの検索方法

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012.08.17 16:01 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
先日、現地活動の際にいちごの採苗床でチャノキイロアザミウマの被害を確認しました。いちごではチャノキイロアザミウマで登録されている農薬は存在せず、アザミウマ類で登録されている農薬も少ないので、作物タブはあまり役に立ちません。病害虫タブでも、チャノキイロアザミウマで検索された農薬通称をひとつひとつ右クリックして薬剤タブで確認しなければならず、かなり面倒です。
しょうがないので、対象病害虫が「チャノキイロアザミウマ,アザミウマ類」で登録されている農薬の内、対象作物が「いちご,野菜類」の農薬をピックアップする下記のような SQL で農薬を検索しました。
select * from vTsushoTekiyo where sakumotsu in ('いちご', '野菜類') and tsusho in (select distinct tsusho from tekiyo where byochu in ('チャノキイロアザミウマ', 'アザミウマ類'))


マイナークロップでは、目的の病害虫に登録のある農薬が存在しない場合が多々ありますが、その作物に登録のある農薬の内、他の作物では目的とする病害虫に登録がある場合が少なからずあります。
病害虫タブは、このようなケースで農薬を検索しやすくするために設置したものです。対象作物を絞り込み条件とするのではなく、下記のように、対象病害虫で検索した農薬から、対象病害虫に関係なく指定作物に登録のある農薬を抽出するように変更してもらうと、とても使いやすくなると思います。

前準備
DROP TABLE IF EXISTS tByochu;
CREATE TEMP TABLE tByochu AS SELECT byochu FROM m_byochu WHERE CONCAT('、', byochu, betsumei) MATCH '%病害虫検索語%';
DROP TABLE IF EXISTS ttTekiyoByochu;
CREATE TEMP TABLE ttTekiyoByochu AS SELECT * FROM tekiyo WHERE bango IN (SELECT bango FROM m_tekiyo WHERE byochu IN (SELECT byochu FROM tByochu) OR mokuteki IN (SELECT byochu FROM tByochu));
SELECT DISTINCT sakumotsu FROM ttTekiyoByochu ORDER BY sakumotsu;


病害虫での検索結果(実際にはビューで必要項目のみ表示)
SELECT * FROM ttTekiyoByochu WHERE byochu IN (SELECT byochu FROM tByochu) OR mokuteki IN (SELECT byochu FROM tByochu);


作物名指定時の検索結果(実際にはビューで必要項目のみ表示)
SELECT * FROM ttTekiyoByochu WHERE sakumotsu IN (選択作物リスト);
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2012.08.18 20:49 | 最終変更
kabe  長老   投稿数: 231
確かに、この方が実用的ですね。
こんなもんでしょうか。

http://acfinder.kabe.info/acfinder120818test_exe.zip

作物名の並び順を ID順に変更しています。
文字コード順とどちらがよいでしょう。
投票数:2 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012.08.18 22:08 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
引用:こんなもんでしょうか。すごく使いやすくなりました。携帯農薬検索システムでも、この方法で「病害虫からの検索」を実装する予定です。

引用:文字コード順とどちらがよいでしょう。普段使い慣れている作物は ID 順の方が見つけやすいし、あまり使わない作物は betsumei の「読み順」が見つけやすかも…。となると、ユーザが選べるようになっているのがベストですが、ソート方法を切り替える度に作物を再検索するのは実用的ではないかも…(そんなでもないかな?)。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012.08.18 22:50
kabe  長老   投稿数: 231
なんか検索が遅いなと思ったら、同じSQLを2回実行していました。
今しがた修正版に差し替えました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012.08.19 00:14 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
病害虫名を指定したときの検索が速くなりました。

ところで、「アブラムシ」で検索した ttTekiyoByochu は 28,938 件、そこから抽出される作物数は 503 件ですが、下記の SQL を実行してグリッドに結果が表示されるのにほとんど時間はかかりませんでした。「アブラムシ」でこの程度なら、作物の並び順を「ID順」「読み順」で並び替えるオプションを付けたとして、それを切り替える度に ttTekiyoByochu から作物名リストを毎回作り直しても、十分実用的だと思います。
SELECT DISTINCT sakumotsu FROM ttTekiyoByochu LEFT JOIN m_sakumotsu USING(sakumotsu) ORDER BY betsumei;
投票数:1 平均点:10.00

  条件検索へ