[seasar-dotnet:1413] Re: 同一テーブルを複数回にわたって結合する

kubo [E-MAIL ADDRESS DELETED]
2009年 7月 30日 (木) 21:24:35 JST


久保(jflute)です。

八鍬さん、こんばんは

> 一つのテーブルに対して、同一テーブルを複数回にわたって
こちらの意味の確認ですが、
例えば、
「会員」テーブルと「会員ステータス」テーブルがあったとして、
「会員」テーブルに「現在会員ステータスコード」と
「前回会員ステータスコード」というカラムがあって、
それぞれのコード経由で「会員ステータス」を取得したい
ということでよろしいでしょうか?
(一つのテーブルから同じテーブルに対して複数のFKがある)

MemberCB cb = new MemberCB();
cb.setupSelect_MemberStatusBy現在();
cb.setupSelect_MemberStatusBy前回();
...

Member member = memberBhv.selectEntity(cb);
... = member.getMemberStatusBy現在();
... = member.getMemberStatusBy前回();

この場合FK制約が貼られていれば、上記の例のように
「テーブル名Byカラム名」という識別子でそれぞれの
リレーション毎にメソッドが作成され、それぞれ別個に
扱うことができます。

なので、FK制約が貼られていればそういったメソッドが
生成されているはずです。

> classificationDefinitionMapを使用することも検討したのですが、
> エンドユーザが保守できる要件をみたせなくなってしまうため、
> 見送った経緯があります。
具体的にどういった要件だったのか教えて頂けますでしょうか?
ぜひ参考にしたいと思いますので、差し支えの無い範囲でいいので。

2009/7/30 Tatsuya Yakuwa <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。
> 八鍬(やくわ)と申します。
>
> DbFluteのConditionBeanについて、おたずねしたいのですが。。。
>
> 外出しSQLを使用せず、ConditionBeanで
> 1つのテーブルに対して、同一テーブルを複数回にわたって
> 、結合することは可能でしょうか?
>
> 例えば、名称マスタや区分マスタなどのコード→名称のようなテーブルから、
> 名称を取得するようなケースです。
>
> http://dbflute.sandbox.seasar.org/contents/condition-bean/basic.html
> のDBFluteBasicExampleを参考にしていたのですが、
> 同じようなケースが見当たらなかったので。。。
>
>
> --
> /*
> SELECT M.kojinID
> ,M.member_no
> ,M.section_cd
> ,M.gender_cd
>  ,C1.code_nm as gender_nm
> ,M.post_cd
>  ,C2.code_nm as post_nm
>  FROM Pre_Member_Info M
>  left outer join dbo.Com_Code C1
>  on (C1.codesb_cd = '0008'
>                and C1.code_val = gender_cd)
>  left outer join dbo.Com_Code C2
>  on (C2.code_val = post_cd
>                and C2.codesb_cd='0026' )
> */
> もしくは
> --
> /*
> SELECT kojinID
> ,member_no
> ,section_cd
>  ,(select code_nm
>      from dbo.Com_Code
>      where codesb_cd='0008'
>      and code_val = gender_cd ) as gender_nm
>  ,(select code_nm
>      from dbo.Com_Code
>      where codesb_cd='0026'
>      and code_val = post_cd ) as post_nm
>
>  FROM Pre_Member_Info
>
> */
>
> のようなSQLです。
>
> ちなみに、
> classificationDefinitionMapを使用することも検討したのですが、
> エンドユーザが保守できる要件をみたせなくなってしまうため、
> 見送った経緯があります。
>
>
> 以上よろしくお願いいたします。
> --
> *----**===**----**===**----**===**----**===**----*
>  株式会社 エム・エス・アイ
>  システム部 八鍬 達也
>  Add:山形市松栄1-5-7
>  Tel:023-647-3966 Fax:023-647-3967
>  E-mail:[E-MAIL ADDRESS DELETED]
>  ☆ ★ ☆    社員ブログ更新中!!!    ☆ ★ ☆
>  http://www.msi-net.co.jp/blog/index.html
> *----**===**----**===**----**===**----**===**----*
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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