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

kubo [E-MAIL ADDRESS DELETED]
2010年 10月 8日 (金) 18:17:08 JST


久保(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 メーリングリストの案内