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

fp [E-MAIL ADDRESS DELETED]
2010年 10月 11日 (月) 16:54:36 JST


fpです。

「OverRelation」を使わずに以下のようにできることは
認識しています。

; FK_MEMBER_MEMBER_LOGIN_AS_VALID = map:{
     ; localTableName  = MEMBER    ; foreignTableName  = MEMBER_LOGIN
     ; localColumnName = MEMBER_ID ; foreignColumnName = MEMBER_ID
     ; fixedCondition =
       exists(select 'TRUE' from MEMBER_STATUS st
               where $$foreignAlias$$.LOGIN_MEMBER_STATUS_CODE =
                     st.MEMBER_STATUS_CODE
                 and st.DISPLAY_ORDER = 2)
     ; fixedSuffix = AsValid
}


(2010/10/11 16:44), fp wrote:
> fpです。
> 
> 久保さん、即座の御返事ありがとうございます。
> 
> ん〜、dbflute_exampledb にうまい例が見つからないのですが
> 仮に、MEMBER ->  MEMBER_LOGIN ->  MEMBER_STATUS で
> MEMBER_STATUS.DISPLAY_ORDER = 2 の条件で
> MEMBER ->  MEMBER_LOGIN に業務的one-to-oneなFKを設定できる
> とした場合、
> 
> ; FK_MEMBER_MEMBER_LOGIN_AS_VALID = map:{
>      ; localTableName  = MEMBER    ; foreignTableName  = MEMBER_LOGIN
>      ; localColumnName = MEMBER_ID ; foreignColumnName = MEMBER_ID
>      ; fixedCondition =
>          $$over(MEMBER_LOGIN.memberStatus)$$.DISPLAY_ORDER = 2
>      ; fixedSuffix = AsValid
> }
> と書きたい、ということです。
> 定義上明示されている MEMBER_LOGIN をポイントテーブルと
> することに曖昧さがあるとは思わないのですが。
> 
> いままさに定義しようとしているリレーションのための
> 条件の指定に、以下は適用できませんし。
>> MEMBER.memberStatusByFooCode というように、
>> 明示的にリレーションを書いてもらう仕様にしています。
> 
> foreignTable についての認識に齟齬があるのでしょうか?
> 
> 
> (2010/10/11 15:56), kubo wrote:
>> 久保(jflute)です。
>>
>>> とはいえ、foreignTable をポイントとすることはできないでしょうか?
>>
>> 例えば、会員に会員ステータスへのFKカラムが二つあった場合、
>> ポイントを会員ステータスにするとになります。
>> なので、foreignTableに関しては、
>> MEMBER.memberStatusByFooCode というように、
>> 明示的にリレーションを書いてもらう仕様にしています。
>> 親の親の親の親の親のカラムとかになると、指定が長くて
>> 大変ですが、曖昧さの可能性も増えるので、
>> そこの優先度を練り直したって感じです。
>>
>>>> ポイントテーブルは ORDER_ITEM で、リレーションは order。
>>>>     ->     $$over(ORDER_ITEM.order)$$
>>>
>>> これは実際の構成ではなく、あくまで例ってことで (^^;
>>
>> おっと、そうでしたかぁ、失敬w


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