<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 8, comments - 0, trackbacks - 0, articles - 11

    2012年8月30日

    一程序員家的水管壞了,他打電話叫來(lái)一個(gè)水管工修理。 水管工鼓搗了一個(gè)小時(shí),終于把管子修好了,他遞給程序員一張600元的帳單。 “600元!”程序員憤怒地說(shuō):“我當(dāng)程序員一天都賺不了這么多錢(qián)!” “是啊。”水管工平靜地說(shuō),“我當(dāng)程序員的時(shí)候也是。”

    posted @ 2012-10-29 14:04 a_alter 閱讀(549) | 評(píng)論 (0)編輯 收藏

    例  如下
    表  A 
    (1--->n) 表B (B 可能為空)
    (n---->n)表C
    (n---->n)表D

    現(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ò)濾
    Select * from A,B, C where A.B_AID = B.AID(+) and B.C_AID = C.AID;  

    這個(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í)別的條篩選
    Select * from A,B,C,D where A.B_AID = B.AID(+) and B.C_AID = C.AID and C.D_AID = D.AID;  

    這樣的D級(jí)別的篩選就會(huì)破壞B級(jí)別的賽選。
    這個(gè)時(shí)候測(cè)試效果就是 D 級(jí)別的join條件 會(huì)破壞 B的left join 效果。

    你可能想到改寫(xiě)條件如下
    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é)幫忙  得知他以前也遇到這情況
    改寫(xiě)為如下條件
    select * from (Select ....,C.D_AID from A,B,C where A.B_AID = B.AID(+) and B.C_AID = C.AID ) E,D where E.D_AID(+) = D.AID
    這樣就不會(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 閱讀(626) | 評(píng)論 (0)編輯 收藏

    本文用途:因?yàn)闀簳r(shí)沒(méi)有時(shí)間去具體看oracle sql的官方文檔 ,紀(jì)錄oracle的一些特殊寫(xiě)法。 (不斷更新)
    1. with ...  as ...
    with querya as (select * from TB_Test)
    2  case .. (when .. then) .... (when ..  then) .. else ... end
        SELECT FO_FULFILL_TRX_STRING.SEQUENCE_NO, AC_TYPE_ORDER.CODE, CASE
        WHEN AC_TYPE_ORDER.CODE = 'SO'
        THEN ( SELECT ORDER_NUMBER FROM SO_ORDER WHERE SO_ORDER.AID = FO_FULFILL_TRX_STRING.AID_ORDER_SO )
        ELSE ( SELECT ORDER_NUMBER FROM PO_ORDER WHERE PO_ORDER.AID = FO_FULFILL_TRX_STRING.AID_ORDER_PO )
        END ORDER_NUMBER
        FROM FO_FULFILL_TRX_STRING, AC_TYPE_ORDER.CODE
    ------------------------------------------------------------------------------------------------------------------------------
    MYSQL 正則支持
    select * from tb_rule_list where expression regexp '^.*\\$\\{0}\\[3].*$';
    Oracle  正則函數(shù)支持
    ORACLE中的支持正則表達(dá)式的函數(shù)主要有
        REGEXP_LIKE :與LIKE的功能相似
        REGEXP_INSTR :與INSTR的功能相似
        REGEXP_SUBSTR :與SUBSTR的功能相似
        REGEXP_REPLACE :與REPLACE的功能相
     
    ------------------------------------------------------------------------------------------------------------------------------
    在MYSQL 中 select 可以顯示 不是group by 中的分組字段, 可以是任意的數(shù)據(jù)列,具體數(shù)據(jù)顯示的是分組后的第一行數(shù)據(jù)
    在ORACLE中 select 是嚴(yán)格的 只能顯示group by 中的字段。
    同樣效果的兩行sql --- 讓自己注意提高自己的使用靈活性
    1. select a.aid AAid,nvl(b.cot,0) countline from po_draft_order a,(select AID_DRAFT_ORDER_PO BAID,count(*) cot from  po_draft_line group by AID_DRAFT_ORDER_PO) b WHERE A.AID = B.BAID(+);
    2. select a.aid, (select count(*) from po_draft_line where AID_DRAFT_ORDER_PO = a.aid ) c from po_draft_order a;
    -------------------------------------------------------------------------------------------------------------------------------
    oracle 分級(jí)
    rank()/dense_rank()  over(partition by ... order by ...)  加強(qiáng)對(duì)分組排序之后的數(shù)據(jù)的控制力。
    over:  over(...)
    partition by :  相當(dāng)于group by
    order by e.sal desc:  按工資從高到低排序(使用rank()/dense_rank() 時(shí),必須要帶order by否則非法)
    rank()/dense_rank():  分級(jí)
    整個(gè)語(yǔ)句的意思就是:在按部門(mén)劃分的基礎(chǔ)上,按工資從高到低對(duì)雇員進(jìn)行分級(jí),“級(jí)別”由從小到大的數(shù)字表示(最小值一定為1)。 
    那么rank()和dense_rank()有什么區(qū)別呢?
    rank():  跳躍排序,如果有兩個(gè)第一級(jí)時(shí),接下來(lái)就是第三級(jí)。
    dense_rank():  連續(xù)排序,如果有兩個(gè)第一級(jí)時(shí),接下來(lái)仍然是第二級(jí)。
    min()/max() over(partition by ...)  // 分組最大最小值
    lead()/lag() over(partition by order by) // 前后數(shù)據(jù)比較使用
    lead(列名,n,m):  當(dāng)前記錄后面第n行記錄的<列名>的值,沒(méi)有則默認(rèn)值為m;如果不帶參數(shù)n,m,則查找當(dāng)前記錄后面第一行的記錄<列名>的值,沒(méi)有則默認(rèn)值為null。
    lag(列名,n,m):  當(dāng)前記錄前面第n行記錄的<列名>的值,沒(méi)有則默認(rèn)值為m;如果不帶參數(shù)n,m,則查找當(dāng)前記錄前面第一行的記錄<列名>的值,沒(méi)有則默認(rèn)值為null。
    主要是各個(gè)函數(shù)和over的配合使用。
    -----------------------------------------------------------------------------------------------------------------------------------------------------
    Oracle 的集合運(yùn)算
    UNION 用來(lái)合并結(jié)果集 要求返回字段是一樣的。
    JOIN 用來(lái)合并字段。
    并集
    UNION ALL, FULL JOIN -- 重復(fù)出現(xiàn)
    UNION, INNER JOIN minus -- 一次出現(xiàn)
    交集
    intersect
    差集
    minus 
    笛卡爾積
    CROSS JOIN
    ------------------------------------------------------------------------------------------------------------------------------
    INNER JOIN oracle 特殊的寫(xiě)法 不知道在sqlserver 是否支持。
    SELECT
    *
    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 閱讀(221) | 評(píng)論 (0)編輯 收藏

    今天看Richface4.2文檔的時(shí)候 發(fā)現(xiàn)變動(dòng)很大 紀(jì)錄下

    RichFaces has been developed with an open architecture to be compatible with a wide variety of environments.

    Developing applications with the RichFaces framework requires the Java Development Kit (JDK), an implementation of JavaServer Faces (JSF), and a development environment.

    Java Development Kit (JDK)

    RichFaces supports the following JDK versions:

    JavaServer Faces (JSF)

    RichFaces supports the following JSF implementations and frameworks:

    Development environment

    RichFaces can be developed using most Java development environments. The following are recommended, and used for examples in this guide:







    posted @ 2012-09-10 17:20 a_alter 閱讀(340) | 評(píng)論 (0)編輯 收藏

      在Eclipse 編輯器中加入xmln 提示功能支持

      是針對(duì)項(xiàng)目設(shè)定的, 右擊項(xiàng)目選擇 Properties --》 Project Facets 勾選你需要使用的 schema定義、

    posted @ 2012-09-07 14:30 a_alter 閱讀(465) | 評(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

    http://docs.oracle.com/javaee/5/tutorial/doc/bnaph.html

    ==== seam 提供了一個(gè)定制的eclipse版本用于seam開(kāi)發(fā),省了很多事

    posted @ 2012-08-30 09:38 a_alter 閱讀(191) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 中文字幕在线免费播放| 无码区日韩特区永久免费系列| 亚洲AV无码第一区二区三区| 久久久免费精品re6| 亚洲色大网站WWW永久网站| 亚洲AV无码一区二区三区在线观看| 99久久免费国产精精品| 亚洲国产电影在线观看| 亚洲一区视频在线播放| 97免费人妻无码视频| 亚洲一区二区三区免费| 亚洲视频一区在线| 亚洲av午夜精品一区二区三区| 久草免费福利资源站| 自拍偷自拍亚洲精品播放| 亚洲成a人片77777老司机| 青青草国产免费久久久下载| 欧洲人成在线免费| 羞羞视频免费网站含羞草| 蜜芽亚洲av无码精品色午夜| 国产免费人视频在线观看免费| 69视频免费观看l| 一二三区免费视频| 中文字幕无码精品亚洲资源网久久| 久久精品国产亚洲AV不卡| 24小时日本在线www免费的| 国产拍拍拍无码视频免费| 色窝窝亚洲av网| 67194在线午夜亚洲| 亚洲人成色777777在线观看| 国产小视频免费观看| 色片在线免费观看| baoyu122.永久免费视频| 怡红院亚洲红怡院在线观看| 亚洲第一成年人网站| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 亚洲国产精品一区二区成人片国内| 成人黄软件网18免费下载成人黄18免费视频 | 四虎成人精品在永久免费| a拍拍男女免费看全片| 老司机69精品成免费视频|