OneToMany 関係を持つ 2 つのテーブルがあり、テーブル B をターゲットとして左結合を行うと、WHERE 句を使用してテーブル A をターゲットとして左結合を行うよりも役に立たない、本当に良い例はありますか。
Table A (ManyToOne with Table B)
Pk
Number
Fk
Table B
Pk
IsActive
つまり、私はそのように結合を書くことができます
select * from TableA as a left outer join TableB as b on b.pk=a.fk where b.isActive=false and a.Number < 15
書く代わりに
select * from TableB as b left outer join TableA as a on b.pk=a.fk where b.isActive=false and a.Number < 15
つまり、私が noSQL システムで結合をサポートしていた場合、誰かが上記の最初のものとして書き直すことができず、これに適したユースケースがあるので、いつ 2 番目のものをサポートする必要があるのでしょうか。それはいつごろ使用されますか?
私が尋ねる理由は、オブジェクトクエリ言語にあります。この状況でwhere句をサポートする必要があるかどうか疑問に思っています(または、代わりに、このようなことを許可しない場合)...
select b from TableB as b left fetch join b.tableAList as a where b.isActive=true and a.xxxxx = something
しかし、bには多くのa行があるため、それほど無効ではありません。a.xxxxはリストであるため無効であり、実際にはa.sizeのみであり、これはそのb行の行のリスト内の行数になります。
ありがとう、ディーン