(現在 過去ログ38 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5813 / inTopicNo.1)  複雑な条件検索と処理の流れについて
  
□投稿者/ 猫子 -(2010/04/28(Wed) 01:50:55)
    お世話になります。
    度々すみません。自分ではどうにも先に進まないのでお力を貸して下さい。

    やりたいことは、表Aにあるデータと同一のものが表Bにもあるかどうかを1行ずつ調べて、該当するものがあれば表Aの「フラグ」項目にチェックを入れることです。

    表A、表Bともに項目名は、
    [時刻]:時間型 , [都道府県]:文字列 , [分類]:整数 , [マーク]:文字列
    [名前]:文字列 です。

    検索をする条件は、表Bの[時刻]が表Aの[時刻]よりも15分以降のもので、[名前]が必ず同一のもので、他の項目も内容が一致するものを探します。

    全ての項目が一致するもの以外にも、同一のものである可能性があればフラグを立てたいのですが、「都道府県」と[分類]、[マーク]は表A、Bともに未定義値のものがあり、[分類]に至っては3桁のうち先頭の1桁しか入力されていないものもあります。

    こんなにややこしい検索条件も可能でしょうか?

    [名前]は同名のものが大量にあるので、両表とも[名前]で昇順並べ替え、
    繰り返しの中で登録した検索条件を使ってヒットするものがあれば、併合絞り込みをして、表Aの[フラグ]に 1 を置換して、表Bの方は選択肢から外すために補集合か削除をしていくのかな?と漠然と考えています・・・。

    全項目が一致した場合の検索条件の登録の時点で、「コマンドの形式に誤りがあります」とエラーになってしまい、どう書いたらよいのかわかりません。

    表Aの項目の値をそれぞれ変数に入れて、
    検索条件登録 条件名 = "全項目一致",
           {[時刻]≧&時刻 , [都道府県]=&都道府県 , [分類]=&分類 ,
            [マーク]=&マーク , [名前]=&名前}
    と書きました。
    もしかしたら配列変数を使うのかな?とも思ったのですが、方法がわかりません。

    全部の項目が一致した場合、
    [都道府県]と[分類]と[名前]だけが一致した場合、
    [都道府県]と[マーク]と[名前]だけが一致した場合、
    [都道府県]と[名前]だけが一致した場合、
    [分類]と[マーク]と[名前]だけが一致した場合、
    [分類]と[名前]だけが一致した場合、
    [分類]の1文字目が一致し、[名前]も一致した場合、
    [マーク]と[名前]だけが一致した場合、
    と if で分岐させて、どれにも該当しなければ else で表Aの[フラグ]に 0 と置換したらいいのか?と考えたのですが、こちらも if の()内にどう書いたらよいのかわかりません。

    [名前]だけは必ず一致していなければいけません。

    丸投げな質問で大変申し訳ないのですが、どうかご教示下さいますよう宜しくお願い致します。
引用返信 [メール受信/OFF] 削除キー/
■5814 / inTopicNo.2)  Re[1]: 複雑な条件検索と処理の流れについて
□投稿者/ 通りすがり -(2010/04/28(Wed) 08:56:21)
    概略、下記の感じ
    走り書きで検証してないし、良く見てない

    *表Aと表Bを[名前]で内部結合(結合条件:全レコード抽出をともにOFF)して、結合表定義の、
     絞り込み条件1:表A.[時刻]+15分≦表B.[時刻] 表A.[都道府県]=表B.[都道府県] 
     絞り込み条件2:表A.[時刻]+15分≦表B.[時刻] 表A.[マーク]=表B.[マーク]
     絞り込み条件3:表A.[時刻]+15分≦表B.[時刻] 表A.[分類]の1文字目=表B.[分類]の1文字目
引用返信 [メール受信/OFF] 削除キー/
■5818 / inTopicNo.3)  Re[1]: 複雑な条件検索と処理の流れについて
□投稿者/ 桐桐舞い -(2010/04/28(Wed) 12:42:10)
    No5813に返信(猫子さんの記事)
    > 全部の項目が一致した場合、
    > [都道府県]と[分類]と[名前]だけが一致した場合、
    > [都道府県]と[マーク]と[名前]だけが一致した場合、
    > [都道府県]と[名前]だけが一致した場合、
    > [分類]と[マーク]と[名前]だけが一致した場合、
    > [分類]と[名前]だけが一致した場合、
    > [分類]の1文字目が一致し、[名前]も一致した場合、
    > [マーク]と[名前]だけが一致した場合、
    > と if で分岐させて、どれにも該当しなければ else で表Aの[フラグ]に 0 と置換したらいいのか?と考えたのですが、こちらも if の()内にどう書いたらよいのかわかりません。
    >
    > [名前]だけは必ず一致していなければいけません。
    >

    こんにちは

    >{[時刻]≧&時刻 , [都道府県]=&都道府県 , [分類]=&分類 ,
            [マーク]=&マーク , [名前]=&名前}


    例えばなんですが、
    ひとつ考え方として参考になれば幸いです。

    いくつもの絞り込み条件がある場合、
    それぞれの条件結果の項目を
    [条件一致1] 整数型
    [条件一致2] 整数型


    繰り返し
    >[都道府県]と[分類]と[名前]だけが一致した場合、
    条件 ([都道府県]=&分類 .and [都道府県]=&名前) 行訂正 [条件一致1]=1,[全条件一致]=[全条件一致]+1

    >[都道府県]と[マーク]と[名前]だけが一致した場合、
    条件 ([都道府県]=&マーク) 行訂正 [条件一致2]=1,[全条件一致]=[全条件一致]+1
    ジャンプ 行番号=+1
    条件 (#終端行) 繰り返し中止
    繰り返し終了


    そして 絞り込み [条件一致1]=1
    全条件一致の方絞り込み [全条件一致]=○(←○は条件一致項目数)

    で条件の行を表示

    みたいな考え方はどうでしょうか?
    (コマンド表記がちと古いですが・・  
    あくまでも一つの考え方として)



引用返信 [メール受信/OFF] 削除キー/
■5819 / inTopicNo.4)  Re[2]: 複雑な条件検索と処理の流れについて
□投稿者/ 桐桐舞い -(2010/04/28(Wed) 12:47:54)
    追加です

    条件に合っていない人の絞り込み

    絞り込み [条件一致1]=0
    絞り込み [全条件一致]=0 或いは [全条件一致]=""
引用返信 [メール受信/OFF] 削除キー/
■5820 / inTopicNo.5)  Re[2]: 複雑な条件検索と処理の流れについて
□投稿者/ うにん -(2010/04/28(Wed) 12:53:46)
    >  絞り込み条件1:表A.[時刻]+15分≦表B.[時刻] 表A.[都道府県]=表B.[都道府県] 
    少なくとも片方が未定義の場合は一致とみなしたいわけですよね?
    >  絞り込み条件2:表A.[時刻]+15分≦表B.[時刻] 表A.[マーク]=表B.[マーク]
    これも。
    上が満たしてなければこっちが満たしても除外だから、ORとは違いますよね...

引用返信 [メール受信/OFF] 削除キー/
■5821 / inTopicNo.6)  Re[2]: 複雑な条件検索と処理の流れについて
□投稿者/ 桐桐舞い -(2010/04/28(Wed) 13:15:59)
    猫子さん

    先ほどのは
    一括処理の場合の考えでした。

    イベントの場合は多少違うかと思います。

    行訂正 ソース値変更・・でしたかね

    今はほとんどイベント処理ですよね。
引用返信 [メール受信/OFF] 削除キー/
■5822 / inTopicNo.7)  Re[2]: 複雑な条件検索と処理の流れについて
□投稿者/ うにん -(2010/04/28(Wed) 13:40:39)
    多分こんな感じ

    > *表Aと表Bを[名前]で内部結合(結合条件:全レコード抽出をともにOFF)して、結合表定義の、
    >  絞り込み条件1
    表A.[時刻] <=["B.TBL".時刻]-I"00:15:00"
    表A.[都道府県] =#COND( ["A.TBL".都道府県]="" , ["B.TBL".都道府県] , ["B.TBL".都道府県]="" , ["A.TBL".都道府県],1,["B.TBL".都道府県] )
    表A.[分類] #部分列( #STR(["A.TBL".分類]) , 1,#小( #文字数( #STR(["A.TBL".分類]) ) , #文字数( #STR(["B.TBL".分類]) ) ) )=#部分列( #STR(["B.TBL".分類]) ,1, #小( #文字数( #STR(["A.TBL".分類]) ) , #文字数( #STR(["B.TBL".分類]) ) ) )
    表A.[マーク] =#COND( ["A.TBL".マーク]="" , ["B.TBL".マーク] , ["B.TBL".マーク]="" , ["A.TBL".マーク],1,["B.TBL".マーク] )

    条件に合った行が結合結果として表示されるだけだから、元の表Aにフラグを
    立てたければ主キー項目が必要。

    分類が整数なのに部分一致させるから式が長くなっている。
    作業用項目を作った方がいいかも。
引用返信 [メール受信/OFF] 削除キー/
■5823 / inTopicNo.8)  Re[3]: 複雑な条件検索と処理の流れについて
□投稿者/ うにん -(2010/04/28(Wed) 13:49:54)
    訂正。

    表A.[都道府県] =#COND( ["A.TBL".都道府県]="" , "" , ["B.TBL".都道府県]="" , ["A.TBL".都道府県],1,["B.TBL".都道府県] )
    表A.[マーク] =#COND( ["A.TBL".マーク]="" , "" , ["B.TBL".マーク]="" , ["A.TBL".マーク],1,["B.TBL".マーク] )

引用返信 [メール受信/OFF] 削除キー/
■5827 / inTopicNo.9)  Re[2]: 複雑な条件検索と処理の流れについて
□投稿者/ 桐桐舞い -(2010/04/28(Wed) 17:59:37)
    >[都道府県]と[分類]と[名前]だけが一致した場合、
    >条件 ([都道府県]=&分類 .and [都道府県]=&名前) 行訂正 [条件一致1]=1,[全条件一致]=[全条件一致]+1

    と先ほど書きましたが
    もしかしたら 2つの表のどちらもが一致ということですね

    すみません 
    先ほどのは 違う結果になりますね。

引用返信 [メール受信/OFF] 削除キー/
■5828 / inTopicNo.10)  Re[3]: 複雑な条件検索と処理の流れについて
□投稿者/ 通りすがり -(2010/04/28(Wed) 18:16:25)
    ああ、未定義があると絞込みメンドウですねぇ、両方とも未定義なら一致とみなすのかな?

    データベースの鬼子邪悪な未定義を排除してから作業したらスマートかな
     #未定義値変換( [] , "未定義だよ〜ん" )
     #未定義値変換( [] , -9999)
    で作業表作って
    > *表Aと表Bを[名前]で内部結合(結合条件:全レコード抽出をともにOFF)して、結合表定義の、
    >  絞り込み条件1:表A.[時刻]+15分≦表B.[時刻] 表A.[都道府県]=表B.[都道府県]
    >  絞り込み条件2:表A.[時刻]+15分≦表B.[時刻] 表A.[マーク]=表B.[マーク]
    >  絞り込み条件3:表A.[時刻]+15分≦表B.[時刻] 表A.[分類]の1文字目=表B.[分類]の1文字目 表A.[分類]<>-9999
     絞り込み条件4:表A.[時刻]+15分≦表B.[時刻] 表A.[分類]=-9999 表B.[分類]=-9999

引用返信 [メール受信/OFF] 削除キー/
■5830 / inTopicNo.11)  Re[1]: 複雑な条件検索と処理の流れについて
□投稿者/ homepiyo -(2010/04/29(Thu) 23:00:19)
    No5813に返信(猫子さんの記事)
    猫子さん。こんにちは
    フラグに該当するデータの行番号を書き込むのはどうでしょうか?
    (該当するデータの数が多いとこのままではエラーになりますが)
    a.cmdを実行すると動きます。



sample20100429a.lzh
/6KB
引用返信 [メール受信/OFF] 削除キー/
■5831 / inTopicNo.12)  皆様ありがとうございます
□投稿者/ 猫子 -(2010/04/30(Fri) 19:32:37)
    猫子です。
    皆様ご丁寧にありがとうございます。
    お礼が遅くなってしまい、大変申し訳ありません。
    急遽、現場に出ることになり、携帯から拝見したのですが、すぐにお返事できなくてすみませんでした。
    今夜、帰宅できそうなので改めてお礼に伺います。

    本当にありがとうございました。
    嬉しくて泣きそうです。

    それでは、取り急ぎお礼までで失礼致します。
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -