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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    交叉表(Cross Table)的基本特點(diǎn)是具有橫縱兩個(gè)自由延展的維度,而平面表結(jié)構(gòu)只有一個(gè)可延展的維度,因?yàn)槠矫姹淼牧忻土袛?shù)是確定的。例如,地區(qū)的產(chǎn)品銷售數(shù)量,在平面表中表達(dá)為
    district_id product_id sell_num
    如果表現(xiàn)為交叉表,則為
               productA  productB
    districtA   sellNum   sellNum
    districtB   sellNum   sellNum
    這種結(jié)構(gòu)上的失配需要通過程序邏輯來進(jìn)行調(diào)整。

    注意到平面表結(jié)構(gòu)只具有一個(gè)可延展的維度,而join可以看作是該維度上的連接操作。因此我們可以將交叉表看作是多個(gè)簡(jiǎn)單平面表結(jié)構(gòu)并置的結(jié)果。即分解為
    A:        
               productA
    districtA   sellNum
    districtB   sellNum

    B:
               productB
    districtA   sellNum
    districtB   sellNum

    橫向維度的擴(kuò)展在程序中表達(dá)。

    SqlInfo結(jié)構(gòu)封裝了這種簡(jiǎn)單平面表的分解片斷。
    class SqlInfo{
        List fieldNames;
        SQL sql;
        String keyField;
    }

    我們?cè)诔绦蛑型ㄟ^JoinBuilder來實(shí)現(xiàn)橫向維度的構(gòu)造
    JoinBuilder.begin(sqlInfoA)
               .join(sqlInfB)
               .leftJoin(sqlInfoC)
               .end();
    生成的sql語句示例如下
    select sqlInfoA.fieldNames, sqlInfoB.fieldNames
    from sqlInfoA.sql join sqlInfoB.sql
    on sqlInfoA.keyField = sqlInfoB.keyField

    主站蜘蛛池模板: 日日噜噜噜噜夜夜爽亚洲精品| 免费看国产成年无码AV片| 亚洲第一页综合图片自拍| 亚洲熟妇无码av另类vr影视| 国产成人免费在线| 亚洲成aⅴ人片在线影院八| 国产成人精品久久免费动漫| 亚洲高清中文字幕| 免费不卡视频一卡二卡| 亚洲妇女熟BBW| 国产人成免费视频| sss日本免费完整版在线观看| 久久亚洲色一区二区三区| 久久国产精品国产自线拍免费| 亚洲大尺度无码专区尤物| 最近高清中文字幕免费| 亚洲福利视频一区二区三区| 99久久免费精品国产72精品九九| 亚洲AV无码AV男人的天堂不卡| 九月婷婷亚洲综合在线| a级大片免费观看| 亚洲第一页在线视频| 四虎成人免费影院网址| 成人免费777777被爆出| 亚洲性无码av在线| 国产亚洲精品免费| 免费一级毛片无毒不卡| 亚洲人成激情在线播放| 国产中文字幕免费观看| 嫩草在线视频www免费观看| 亚洲乱码一二三四区麻豆| 国产在线ts人妖免费视频| 好男人资源在线WWW免费| 亚洲美女视频免费| 国产一区视频在线免费观看 | 亚洲第一精品在线视频| 亚洲成年人免费网站| 免费国产va视频永久在线观看| 亚洲av无码专区国产乱码在线观看 | 成人一级免费视频| 久久亚洲精品人成综合网|