<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年9月7日

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

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

    例  如下
    表  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高手, 誰知道的留個言火鏈接  謝謝

    =======================================================================
    后來找同學幫忙  得知他以前也遇到這情況
    改寫為如下條件
    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 字段是必填的話  那么就相當于  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ù)。 當然如果系統(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)編輯 收藏

    本文用途:因為暫時沒有時間去具體看oracle sql的官方文檔 ,紀錄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 是嚴格的 只能顯示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 :  相當于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):  當前記錄后面第n行記錄的<列名>的值,沒有則默認值為m;如果不帶參數(shù)n,m,則查找當前記錄后面第一行的記錄<列名>的值,沒有則默認值為null。
    lag(列名,n,m):  當前記錄前面第n行記錄的<列名>的值,沒有則默認值為m;如果不帶參數(shù)n,m,則查找當前記錄前面第一行的記錄<列名>的值,沒有則默認值為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)編輯 收藏

    今天看Richface4.2文檔的時候 發(fā)現(xiàn)變動很大 紀錄下

    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)編輯 收藏

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

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

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

    主站蜘蛛池模板: eeuss免费天堂影院| 久久久亚洲精华液精华液精华液| a级毛片毛片免费观看永久| 亚洲不卡AV影片在线播放| 未满十八私人高清免费影院| 免费播放春色aⅴ视频| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲免费闲人蜜桃| 欧洲黑大粗无码免费| 亚洲AV无码一区二区三区牛牛| 99久久免费精品国产72精品九九| 久久亚洲精品国产亚洲老地址| 成年女人视频网站免费m| 亚洲乱码中文字幕在线| 免费国产成人高清视频网站| 污视频网站免费在线观看| 亚洲中文字幕无码久久精品1| 久爱免费观看在线网站| 亚洲影视自拍揄拍愉拍| 国产精品色午夜视频免费看| 又大又硬又粗又黄的视频免费看| 久久亚洲2019中文字幕| 无码精品人妻一区二区三区免费看 | 亚洲乱码一二三四五六区| 午夜老司机免费视频| 一个人晚上在线观看的免费视频| 亚洲精品无码久久久久| 免费精品国产自产拍在| 美女被爆羞羞网站免费| 亚洲AV无码成人网站久久精品大| 在线观看日本免费a∨视频| 日本精品久久久久久久久免费| 亚洲国产精彩中文乱码AV| 欧美大尺寸SUV免费| 亚洲五月午夜免费在线视频| 亚洲老熟女@TubeumTV| 国产免费啪嗒啪嗒视频看看| 无码免费一区二区三区免费播放| 久久久亚洲精华液精华液精华液 | 亚洲伊人久久大香线焦| 亚洲Av无码国产情品久久|