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

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

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

    The important thing in life is to have a great aim , and the determination

    常用鏈接

    統(tǒng)計(jì)

    IT技術(shù)鏈接

    保險(xiǎn)相關(guān)

    友情鏈接

    基金知識(shí)

    生活相關(guān)

    最新評論

    在SQL Server 中合理的使用 LEFT OUTER JOIN 進(jìn)行開發(fā)

    比如我們想對某人的消費(fèi)項(xiàng)目進(jìn)行匯總,對應(yīng)以下兩個(gè)表:Theme 與 ThemeDetail

    Theme 的記錄為:
    ThemeID(int)????ThemeName(varchar[10])
    ????????1????????????????????????就餐
    ????????2????????????????????????出差
    ????????3????????????????????????乘車
    ????????4????????????????????????其它

    ThemeDetail 的記錄為:
    DetailID(int)????ThemeID(int)????Price(money)
    ??? ???1????????????????????1?????????????????12.5
    ? ?????2????????????????????1????????????????????5
    ? ?????3????????????????????1????????????????????6
    ? ?????4????????????????????2???????????????????11
    ? ???? 5????????????????????2???????????????????17
    ? ???? 6????????????????????3????????????????????8

    其中 Theme 中的 ThemeID 與 ThemeDetail 中的 ThemeID 是一對多的關(guān)系,對 ThemeDetail 表的理解如下:“就餐”費(fèi)用為 12.5 + 5 + 6 = 23.5 元,“出差”費(fèi)用為 11 + 17 = 28 元,“乘車”費(fèi)用為 8 = 8 元,“其它”費(fèi)用不存在,視為 0 處理,對應(yīng)的 SQL 語句可以這樣表示:

    SELECT TOP 100 PERCENT dbo.Theme.ThemeName, ISNULL(SUM(dbo.ThemeDetail.Price), 0)
    ????? AS TotalPrice
    FROM dbo.Theme INNERJOIN
    ????? dbo.ThemeDetail ON dbo.Theme.ThemeID = dbo.ThemeDetail.ThemeID
    GROUP BY dbo.Theme.ThemeName, dbo.Theme.ThemeID
    ORDER BY dbo.Theme.ThemeID

    執(zhí)行結(jié)果如下:
    ThemeName????TotalPrice
    ????就餐????????????? 23.5
    ????出差?????????????? 28
    ????乘車??????????????? 8

    對于消費(fèi)記錄不存的記錄如果就這樣不顯示它的話,使用內(nèi)聯(lián)的方法就可以滿足要求了,但是我們現(xiàn)在需要對 Theme 中的每一項(xiàng)均做統(tǒng)計(jì),也包括“其它”項(xiàng),于是我們應(yīng)該采用另一種方法來實(shí)現(xiàn),這就是左外聯(lián)的方法,相應(yīng)的 SQL 語句可以這樣表示:

    SELECT TOP 100 PERCENT dbo.Theme.ThemeName, ISNULL(SUM(dbo.ThemeDetail.Price), 0)
    ????? AS TotalPrice
    FROM dbo.Theme LEFTOUTER JOIN
    ????? dbo.ThemeDetail ON dbo.Theme.ThemeID = dbo.ThemeDetail.ThemeID
    GROUP BY dbo.Theme.ThemeName, dbo.Theme.ThemeID
    ORDER BY dbo.Theme.ThemeID

    執(zhí)行結(jié)果如下:
    ThemeName????TotalPrice
    ????就餐????????????? 23.5
    ????出差?????????????? 28
    ????乘車??????????????? 8
    ????其它????????????????0

    這樣是不是就滿足了我們的要求呢!



    /*
    我測試了 10 萬條記錄后發(fā)現(xiàn)速度并非兄弟所說的那樣,測試代碼如下
    */
    declare @StartTime datetime
    set @StartTime = getdate()

    SELECT TOP 100 PERCENT ThemeName, ISNULL(SUM(Price), 0) AS TotalPrice
    FROM Theme LEFT OUTER JOIN ThemeDetail ON Theme.ThemeID = ThemeDetail.ThemeID
    GROUP BY ThemeName, Theme.ThemeID
    ORDER BY Theme.ThemeID

    select datediff(millisecond,@StartTime,getdate())
    set @StartTime = getdate()

    SELECT TOP 100 PERCENT ThemeName, ISNULL((SELECT SUM(ThemeDetail.Price)
    FROM ThemeDetail
    WHERE ThemeDetail.ThemeID = Theme.ThemeID), 0) AS TotalPrice
    FROM Theme
    GROUP BY ThemeName, ThemeID
    ORDER BY ThemeID

    select datediff(millisecond,@StartTime,getdate())


    /* 測試結(jié)果如下,精確到毫秒,最后是平均值 */
    次數(shù) 時(shí)間 時(shí)間
    ----------------------
    1 93 110
    2 93 93
    3 93 110
    4 93 93
    5 93 110
    6 93 110
    7 93 93
    8 93 93
    9 93 93
    10 93 126
    11 110 110
    12 93 126
    13 96 123
    14 93 126
    15 93 110
    16 93 123
    17 106 96
    18 93 93
    19 106 96
    20 93 93
    ----------------------
    95.3 106.35

    posted on 2007-02-05 18:25 鴻雁 閱讀(278) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 亚洲AV日韩AV鸥美在线观看| 国产亚洲?V无码?V男人的天堂 | 天堂亚洲免费视频| 香蕉97超级碰碰碰免费公| 久久精品亚洲综合专区| 无码亚洲成a人在线观看| 女同免费毛片在线播放| 在线观看亚洲天天一三视| h在线看免费视频网站男男| 亚洲午夜未满十八勿入网站2| 久久不见久久见免费影院www日本| 亚洲综合国产精品第一页| 在线看片免费人成视频久网下载| 亚洲精品国产美女久久久| A级毛片高清免费视频在线播放| 亚洲av综合av一区| 亚洲精品国产免费| 亚洲 日韩 色 图网站| 四虎在线播放免费永久视频| 国产99久久久国产精免费| 国产AV无码专区亚洲AVJULIA| 亚洲免费视频在线观看| 亚洲伦理中文字幕| 免费国产成人高清视频网站| 黄色毛片免费观看| 亚洲av日韩综合一区在线观看| 4444www免费看| 在线看亚洲十八禁网站| 亚洲国产精品无码久久久不卡| 97久久免费视频| 国产精品亚洲专区在线播放| 国产亚洲成av人片在线观看| 国产h视频在线观看免费| 麻豆安全免费网址入口| 91在线亚洲精品专区| 国产在线播放免费| 一级毛片免费不卡在线| 亚洲av日韩综合一区二区三区 | 在线观看成人免费| 国内精品免费久久影院| 亚洲精品天堂在线观看|