[seasar-dotnet:1849] Re: [DBFlute.NET]業務的one-to-oneな条件に他テーブルのカラム値指定

fp [E-MAIL ADDRESS DELETED]
2010年 10月 8日 (金) 19:49:27 JST


fpです。

久保さん、こんばんは。

素早いご対応、ありがとうございます。

宜しくお願いします。


サブクエリの件も丁寧に解説いただきありがとうございます。
できるかな、と思いながら試さずに質問してしまいました。



(2010/10/08 18:17), kubo wrote:
> 久保(jflute)です。
> 
> 途中経過ですが、「A」に関してなんとか目処が立ちました。
> まずJava版で実装して、問題なく動作しましたので、
> これからC#へ移行しようと思います。
> (ひたすらfinalを消したりメソッド先頭を大文字にしたり...)
> 
>> 「N」ですね。
>>
>>> N. サブクエリ内の絞り込み条件として別リレーションのカラム
>>> 「PURCHASE.PURCHASE_DATE = withdrawal.WITHDRAWAL_DATE」
>>> というように絞り込みで別リレーションのカラムを利用。
> 
> ありがとうございます。
> 現状でも、サブクエリの中で ColumnQuery を利用すれば、
> 動作的に同じSQLを発行することはできますが、
> (例だと、サブクエリ内のPurchaseCBで、ColumnQueryでMEMBERを
> 経由してWITHDRAWALへ...ちょっと関連を戻るような感じ)
> 外側で既に該当カラムが from 句に登場しているのであれば、
> 論理的にはちょっと無駄な処理が入ってしまいます。
> (オプティマイザは気を利かせてくれるだろうか...)
> 
> ただ、よほどの件数でなければ影響はないと思うので、
> (影響あるくらいの件数なら、そもそも相関サブクエリ自体が遅いかなと)
> 基本は上記のようなやり方で、どうしても厳密なパフォーマンス
> を考慮するならば外だしSQLで、という感じです。
> 
> 2010/10/8 fp<[E-MAIL ADDRESS DELETED]>:
>> fpです。
>>
>> 久保さん、ありがとうございます。
>>
>> 「N」ですね。
>>
>>> N. サブクエリ内の絞り込み条件として別リレーションのカラム
>>> 「PURCHASE.PURCHASE_DATE = withdrawal.WITHDRAWAL_DATE」
>>> というように絞り込みで別リレーションのカラムを利用。
>>
>>> M. 相関サブクエリの関連を表現する条件に別リレーションのカラム
>>> (その場合、要はFKとは無関係のリレーションを辿る感じ)
>> は、FKと無関係に辿るってことはほぼ無いのではないかと。
>>
>>
>> (2010/10/08 10:17), kubo wrote:
>>> 久保(jflute)です。
>>>
>>> 「A」の件は検討中です(頭の中で仕様検討・実装中)。
>>>
>>>> fixedCondition とは別に ExistsReferrer, DerivedReferrer
>>>> 等のサブクエリについても同じ意味合いのニーズはあります。
>>>
>>> こちらですが、
>>>
>>> M. 相関サブクエリの関連を表現する条件に別リレーションのカラム
>>> N. サブクエリ内の絞り込み条件として別リレーションのカラム
>>>
>>> どちらのイメージでしょうか?
>>> 例えば、以下のようなSQLがあったとき:
>>>
>>> select ...
>>>    from MEMBER dflocal
>>>      left outer join MEMBER_WITHDRAWAL withdrawal on ...
>>> where exists (
>>>       select ...
>>>         from PURCHASE
>>>        where dflocal.MEMBER_ID = PURCHASE.MEMBER_ID
>>>          and PURCHASE.PURCHASE_DATE = withdrawal.WITHDRAWAL_DATE
>>> )
>>>
>>> 「M」は、
>>> 「dflocal.MEMBER_ID = PURCHASE.MEMBER_ID」
>>> の部分をカスタマイズして別リレーションのカラムを指定。
>>> (その場合、要はFKとは無関係のリレーションを辿る感じ)
>>>
>>> 「N」は、
>>> 「PURCHASE.PURCHASE_DATE = withdrawal.WITHDRAWAL_DATE」
>>> というように絞り込みで別リレーションのカラムを利用。
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内