posted @ 2012-10-29 14:04 a_alter 閱讀(558) | 評(píng)論 (0) | 編輯 收藏
表 A
(1--->n) 表B (B 可能為空)
(n---->n)表C
現(xiàn)在有如下問(wèn)題 在查詢的時(shí)候我們?cè)试Sb為空的A數(shù)據(jù)
Select * from A,B where A.B_AID = B.AID(+)
擴(kuò)展查詢 如果進(jìn)行B關(guān)聯(lián)C級(jí)別的條件過(guò)濾
這個(gè)時(shí)候C能夠知道B是可以為空的, 這個(gè)時(shí)候的join效果是, 如果在A關(guān)聯(lián)B B存在的情況下 在使用 C的join 條件進(jìn)行篩選。 這個(gè)時(shí)候B為空的A條件還是可以擺查出來(lái)的。 只不過(guò)數(shù)據(jù)列B為空而已
再進(jìn)行擴(kuò)展篩選 進(jìn)行C關(guān)聯(lián)D級(jí)別的條篩選
這樣的D級(jí)別的篩選就會(huì)破壞B級(jí)別的賽選。
你可能想到改寫條件如下
Select * from A,B,C,D where A.B_AID = B.AID(+) and B.C_AID = C.AID and C.D_AID(+) = D.AID;
可惜我測(cè)試結(jié)果和full join 的效果是一樣的,不是oracle高手, 誰(shuí)知道的留個(gè)言火鏈接 謝謝
=======================================================================
后來(lái)找同學(xué)幫忙 得知他以前也遇到這情況
改寫為如下條件
這樣就不會(huì)破壞B(+) 效果。
個(gè)人理解就是 select 的組織數(shù)據(jù)效果。具體不清楚 歡迎發(fā)言。
=======================================================================
補(bǔ)充:
今天我才知道 left join 和 inner join 欄位是否必填還有關(guān)系。
在這個(gè)問(wèn)題上有個(gè)地方被欺騙了
就是在 A Left join B inner JOIN C 的時(shí)候 如果 B 的 C 字段是必填的話 那么就相當(dāng)于 left join。 如果不是必填的話 你必須手動(dòng)的指示 left join (+) 。
=====================================================================
補(bǔ)充 2012/10/19 發(fā)現(xiàn)以上的理解不全面
A--B(+) 意思指B 端可為空, 如果 對(duì)B -- C 下面的元素進(jìn)行賽選, 在局部看 B 和 C 的關(guān)系是兩段都必須存在的, 但是在A -- B(+) 的前提下 C可以為空的, 所以需要使用 B --- C(+) 來(lái)進(jìn)行關(guān)聯(lián) 這樣的壞處是可能會(huì)加載出 B (存在)-- C (不存在) 這樣的錯(cuò)誤數(shù)據(jù)。 當(dāng)然如果系統(tǒng)中有對(duì)這種數(shù)據(jù)有確實(shí)保障的時(shí)候可以忽略該問(wèn)題
如果沒(méi)有確切的保障的話
可能就需要使用 A --- D(+) 其中D 為 select * from B,C where B = C 這樣的過(guò)濾方式, 但是這樣就增加了復(fù)雜度, 你需要將可能用到的查詢條件和查詢結(jié)果集在D中 select 一一列出來(lái)
在 Select A.*,R1,R2,R3 from A ,(select B.A_Aid,c1,c2,c3,R1,R2,R3 from B,C where B.C_AID= C.Aid) D where A.Aid = B.A_Aid and c1 = ? and c2 = ? ....
Sql 復(fù)雜度高了一點(diǎn)。
posted @ 2012-10-09 10:15 a_alter 閱讀(635) | 評(píng)論 (0) | 編輯 收藏
------------------------------------------------------------------------------------------------------------------------------
INNER JOIN oracle 特殊的寫法 不知道在sqlserver 是否支持。
*
FROM (
SO_WEC_SODL_DESPATCH_HEADER AS SO_WEC_SODL_DESPATCH_HEADER_1
INNER JOIN (
(
SO_WARRANTY_ENTITLEMENT WET_1
INNER JOIN (SO_WARRANTY_ENTITLEMENT INNER JOIN SO_WEC_SODL
ON SO_WARRANTY_ENTITLEMENT.AID = SO_WEC_SODL.AID_WARRANTY_ENTITLEMENT_SO
) ON (WET_1.AID_COMPANY = SO_WARRANTY_ENTITLEMENT.AID_COMPANY)
AND (WET_1.SEQ_ITEM_NUM = SO_WARRANTY_ENTITLEMENT.PARENT_SEQ_ITEM)
AND (WET_1.ITEM_LINE_NUM = SO_WARRANTY_ENTITLEMENT.PARENT_ITEM_NUM)
AND (WET_1.SO_LINE_NUM = SO_WARRANTY_ENTITLEMENT.PARENT_SOLINE_NUM)
AND (WET_1.SO_NUM = SO_WARRANTY_ENTITLEMENT.SO_NUM)
)
INNER JOIN SO_WEC_SODL AS SO_WEC_SODL_1 ON (SO_WEC_SODL.LINE_DELIVERY_NUMBER = SO_WEC_SODL_1.LINE_DELIVERY_NUMBER)
AND (WET_1.AID = SO_WEC_SODL_1.AID_WARRANTY_ENTITLEMENT)
) ON SO_WEC_SODL_DESPATCH_HEADER_1.AID_WEC_SODL = SO_WEC_SODL_1.AID
) INNER JOIN SO_WEC_SODL_DESPATCH_HEADER ON SO_WEC_SODL.AID = SO_WEC_SODL_DESPATCH_HEADER.AID_WEC_SODL
===
posted @ 2012-09-12 12:57 a_alter 閱讀(227) | 評(píng)論 (0) | 編輯 收藏
posted @ 2012-09-10 17:20 a_alter 閱讀(345) | 評(píng)論 (0) | 編輯 收藏
是針對(duì)項(xiàng)目設(shè)定的, 右擊項(xiàng)目選擇 Properties --》 Project Facets 勾選你需要使用的 schema定義、
posted @ 2012-09-07 14:30 a_alter 閱讀(469) | 評(píng)論 (0) | 編輯 收藏
用了seam也快一年了, 可惜一直是在做開(kāi)發(fā), 今天決定回頭總結(jié)下, 并且去看一下JSF , SEAM 的配置。
seam 簡(jiǎn)單介紹
直接看英文吧, 翻譯的不行
Seam is a powerful open source development platform for building rich Internet applications in Java. Seam integrates technologies such as Asynchronous JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA), Enterprise Java Beans (EJB 3.0) and Business Process Management (BPM) into a unified full-stack solution, complete with sophisticated tooling.
Seam has been designed from the ground up to eliminate complexity at both architecture and API levels. It enables developers to assemble complex web applications using simple annotated Java classes, a rich set of UI components, and very little XML. Seam's unique support for conversations and declarative state management can introduce a more sophisticated user experience while at the same time eliminating common bugs found in traditional web applications.
我們可以看到seam 和 jsf,jpa,ejb 結(jié)合比較緊密,提供了annotation 方式支持, 提供了大量的 ui components 支持。
想說(shuō)的一點(diǎn)是, seam不是一個(gè)框架, 而是一個(gè)平臺(tái)。
附:
JSF 資料查詢 http://caterpillar.onlyfun.net/Gossip/JSF/IntroduceJSF.htm
==== seam 提供了一個(gè)定制的eclipse版本用于seam開(kāi)發(fā),省了很多事
posted @ 2012-08-30 09:38 a_alter 閱讀(197) | 評(píng)論 (0) | 編輯 收藏