有沒有人有一個非常好的例子,其中有兩個表與一個OneToMany關係與表B進行左連接,因爲目標將不如僅使用表A進行左連接作爲使用WHERE子句的目標。OneToMany關係並加入where子句
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系統的加入,我什麼時候會曾經需要支持第二個,因爲有人不能將它重寫爲上面的第一個,並且有一個很好的用例,所以我可以用它來包圍我的頭部什麼時候可以使用它?
我之所以問的是在對象查詢語言,我想知道如果我需要支持在這種情況下做一個where子句(或替代,如果我只是不允許這樣的事情)...
select b from TableB as b left fetch join b.tableAList as a where b.isActive=true and a.xxxxx = something
但不是無效的,因爲b有很多行,所以a.xxxx是無效的,因爲它是一個列表,並且只能是a.size,它將是該行的行列表中的行數。
感謝, 院長
啊,我認爲它會返回空行並返回b.isActive = true的行。好吧,所以我需要做的地方(a.fk = null || b.isActive = false)&& a.Number <15做到這一點,然後 –
或者,coalesce(b.IsActive,false = false和a .Number <15'。 –
如果表之間存在PK-FK(主鍵/外鍵)關係並且聯接位於PK-FK列上,則FK表中不應有任何不匹配PK表,因此與FK表作爲主表(LHS of join)的LEFT JOIN應該沒有意義(與常規聯接相同)。在相反的方向上,PK表中可能有行,但沒有相應的行在FK表中的行;因此,與PK表作爲主導表的LEFT JOIN可能是有意義的。 –