<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年10月29日

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

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

    2012年10月9日

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

    現(xiàn)在有如下問題  在查詢的時候我們允許b為空的A數(shù)據(jù)
    Select * from A,B where A.B_AID = B.AID(+)

    擴展查詢  如果進行B關(guān)聯(lián)C級別的條件過濾
    Select * from A,B, C where A.B_AID = B.AID(+) and B.C_AID = C.AID;  

    這個時候C能夠知道B是可以為空的, 這個時候的join效果是, 如果在A關(guān)聯(lián)B  B存在的情況下 在使用 C的join 條件進行篩選。 這個時候B為空的A條件還是可以擺查出來的。 只不過數(shù)據(jù)列B為空而已

    再進行擴展篩選  進行C關(guān)聯(lián)D級別的條篩選
    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級別的篩選就會破壞B級別的賽選。
    這個時候測試效果就是 D 級別的join條件 會破壞 B的left join 效果。

    你可能想到改寫條件如下
    Select * from A,B,C,D where A.B_AID = B.AID(+) and B.C_AID = C.AID and C.D_AID(+) = D.AID;  

    可惜我測試結(jié)果和full join 的效果是一樣的,不是oracle高手, 誰知道的留個言火鏈接  謝謝

    =======================================================================
    后來找同學(xué)幫忙  得知他以前也遇到這情況
    改寫為如下條件
    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
    這樣就不會破壞B(+) 效果。  

    個人理解就是 select 的組織數(shù)據(jù)效果。具體不清楚 歡迎發(fā)言。

    =======================================================================
    補充:
    今天我才知道  left join 和 inner join 欄位是否必填還有關(guān)系。

    在這個問題上有個地方被欺騙了 

    就是在 A Left join B  inner JOIN C 的時候   如果 B 的 C 字段是必填的話  那么就相當(dāng)于  left join。 如果不是必填的話 你必須手動的指示 left join (+)  。
    =====================================================================
    補充 2012/10/19   發(fā)現(xiàn)以上的理解不全面

    A--B(+) 意思指B 端可為空, 如果 對B -- C 下面的元素進行賽選, 在局部看 B 和 C 的關(guān)系是兩段都必須存在的, 但是在A -- B(+) 的前提下 C可以為空的,  所以需要使用 B --- C(+) 來進行關(guān)聯(lián)  這樣的壞處是可能會加載出 B  (存在)-- C (不存在) 這樣的錯誤數(shù)據(jù)。 當(dāng)然如果系統(tǒng)中有對這種數(shù)據(jù)有確實保障的時候可以忽略該問題

    如果沒有確切的保障的話
    可能就需要使用 A --- D(+) 其中D 為  select * from B,C where B = C 這樣的過濾方式, 但是這樣就增加了復(fù)雜度, 你需要將可能用到的查詢條件和查詢結(jié)果集在D中 select 一一列出來

    在 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ù)雜度高了一點。





    posted @ 2012-10-09 10:15 a_alter 閱讀(626) | 評論 (0)編輯 收藏

    2012年9月12日

    本文用途:因為暫時沒有時間去具體看oracle sql的官方文檔 ,紀(jì)錄oracle的一些特殊寫法。 (不斷更新)
    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中的支持正則表達式的函數(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 分級
    rank()/dense_rank()  over(partition by ... order by ...)  加強對分組排序之后的數(shù)據(jù)的控制力。
    over:  over(...)
    partition by :  相當(dāng)于group by
    order by e.sal desc:  按工資從高到低排序(使用rank()/dense_rank() 時,必須要帶order by否則非法)
    rank()/dense_rank():  分級
    整個語句的意思就是:在按部門劃分的基礎(chǔ)上,按工資從高到低對雇員進行分級,“級別”由從小到大的數(shù)字表示(最小值一定為1)。 
    那么rank()和dense_rank()有什么區(qū)別呢?
    rank():  跳躍排序,如果有兩個第一級時,接下來就是第三級。
    dense_rank():  連續(xù)排序,如果有兩個第一級時,接下來仍然是第二級。
    min()/max() over(partition by ...)  // 分組最大最小值
    lead()/lag() over(partition by order by) // 前后數(shù)據(jù)比較使用
    lead(列名,n,m):  當(dāng)前記錄后面第n行記錄的<列名>的值,沒有則默認值為m;如果不帶參數(shù)n,m,則查找當(dāng)前記錄后面第一行的記錄<列名>的值,沒有則默認值為null。
    lag(列名,n,m):  當(dāng)前記錄前面第n行記錄的<列名>的值,沒有則默認值為m;如果不帶參數(shù)n,m,則查找當(dāng)前記錄前面第一行的記錄<列名>的值,沒有則默認值為null。
    主要是各個函數(shù)和over的配合使用。
    -----------------------------------------------------------------------------------------------------------------------------------------------------
    Oracle 的集合運算
    UNION 用來合并結(jié)果集 要求返回字段是一樣的。
    JOIN 用來合并字段。
    并集
    UNION ALL, FULL JOIN -- 重復(fù)出現(xiàn)
    UNION, INNER JOIN minus -- 一次出現(xiàn)
    交集
    intersect
    差集
    minus 
    笛卡爾積
    CROSS JOIN
    ------------------------------------------------------------------------------------------------------------------------------
    INNER JOIN oracle 特殊的寫法 不知道在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) | 評論 (0)編輯 收藏

    2012年9月10日

    今天看Richface4.2文檔的時候 發(fā)現(xiàn)變動很大 紀(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) | 評論 (0)編輯 收藏

    2012年9月7日

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

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

    posted @ 2012-09-07 14:30 a_alter 閱讀(465) | 評論 (0)編輯 收藏

    2012年8月30日

    前序

    用了seam也快一年了, 可惜一直是在做開發(fā), 今天決定回頭總結(jié)下, 并且去看一下JSF , SEAM 的配置。

    seam 簡單介紹

    直接看英文吧, 翻譯的不行

    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 支持。

    想說的一點是, seam不是一個框架, 而是一個平臺。


    附:
    JSF 資料查詢  http://caterpillar.onlyfun.net/Gossip/JSF/IntroduceJSF.htm

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

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

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

    主站蜘蛛池模板: 国产男女猛烈无遮挡免费视频| 亚洲欧洲精品视频在线观看| 亚洲人成网77777亚洲色| 激情综合亚洲色婷婷五月| 一级黄色免费网站| 99久久综合国产精品免费| 亚洲中文字幕无码永久在线| 亚洲情A成黄在线观看动漫软件| 一区二区三区免费高清视频| 亚洲成av人片不卡无码久久 | 亚洲爽爽一区二区三区| 亚洲va在线va天堂va手机| 国产桃色在线成免费视频| 久久久久久久久亚洲| 一级毛片免费播放男男| 亚洲色欲久久久综合网| 日韩免费无码一区二区三区| 亚洲国产精品成人| 中国一级全黄的免费观看| 亚洲国产精品成人久久蜜臀| 国产免费区在线观看十分钟| 亚洲第一页综合图片自拍| 最近国语视频在线观看免费播放| va亚洲va日韩不卡在线观看| 亚洲中文字幕无码中文| 免费人成网站在线观看10分钟| 亚洲色偷精品一区二区三区| 亚洲视频在线精品| 99久久久国产精品免费牛牛| 亚洲日韩精品国产3区| 女人18毛片a级毛片免费| 亚洲中文无码a∨在线观看| 99国产精品免费视频观看| 亚洲妇女熟BBW| 亚洲日韩一页精品发布| 我的小后妈韩剧在线看免费高清版| 亚洲精品国产第一综合99久久| 白白国产永久免费视频| 亚洲高清毛片一区二区| 亚洲性猛交XXXX| 色视频色露露永久免费观看|