隨筆-94  評論-56  文章-3  trackbacks-0
          最近一直在做一個項(xiàng)目,很久沒來這里寫東西了。項(xiàng)目剛完成第一期,第二期就接踵而至了。在一期中,我發(fā)現(xiàn)自己對SQL文還有不少知識的空白點(diǎn),比如對于UNION和左連接的使用,下面就這方面做些筆記,與大家共享。
          ■項(xiàng)目中使用的DB是Oracle。
          ■例一,注意UNION的使用。
            ★詳細(xì)式樣中的SQL文(部分):
          取得項(xiàng)目
            省略
          選択條件
            請求殘高.今回締日 = 畫面.「締日」
          結(jié)合條件
            得意先.得意先コード?。健≌埱髿埜撸靡庀去畅`ド
            請求殘高.得意先コード?。健.得意先コード
            得意先.得意先コード?。健〉靡庀去ⅴ丧螅靡庀去畅`ド
          テーブル
            得意先
            得意先アドオン
            請求殘高
           ?。ㄈ〉庙?xiàng)目
               省略
             選択條件
               売上実績.売上計(jì)上日?。尽dd_months(締日
          ,-1)
               売上実績.売上計(jì)上日?。迹健【喨?br />   結(jié)合條件
               売上実績アドオン.売上実績管理番號 = 売上実績.売上実績管理番號
               その他結(jié)合條件
             テーブル
               売上実績
               売上実績アドオン
               コンボボックスデータ
            UNION
             取得項(xiàng)目
               省略
             選択條件
               入金明細(xì).削除フラグ?。健?/span>
               入金データ.削除フラグ?。健?/span>
             結(jié)合條件
               入金データ.入金番號 = 入金明細(xì).入金番號
               その他結(jié)合條件
             テーブル
               入金明細(xì)
               入金データ
              ?。  
            ★對應(yīng)的SQL文(部分):
          ??1?"SELECT?"
          ??2?+"??M_CUST.CUST_CD,?"
          ??3?+"??M_CUST_A.CUST_A_SELFPSN,?"
          ??4?+"??M_EXCH_RATE_A.EXCH_RATE,?"
          ??5?+"??T_BILL_CUMULATE_W_DDS.CLAIM_LAST,?"
          ??6?+"??A.UN_TYPE,?"
          ??7?+"??A.SALES_DATE,?"
          ??8?+"??A.SLIP_CD,?"
          ??9?+"??A.DDS_TORI_TYP_ALL_U,?"
          ?10?+"??A.DDS_TORI_TYP_ALL_N,?"
          ?11?+"??A.CUST_ODR_NO,?"
          ?12?+"??A.BOUND_CD,?"
          ?13?+"??A.ITEM_NAME_U,?"
          ?14?+"??A.ITEM_NAME_N,?"
          ?15?+"??A.UPDATED_BY,?"
          ?16?+"??A.SALES_QTY,?"
          ?17?+"??A.UNIT_COST_TYP,?"
          ?18?+"??A.SALES_UNIT_PRICE_EXCH_RATES,?"
          ?19?+"??A.SALES_AMOUNT_EXCH_RATES,?"
          ?20?+"??A.SALES_UNIT_PRICE,?"
          ?21?+"??A.SALES_AMOUNT,?"
          ?22?+"??A.DEPO_AMOUNT,?"
          ?23?+"??A.FOREIGN_AMOUNT,?"
          ?24?+"??A.SALES_TYP?"
          ?25?+"FROM?"
          ?26?+"??T_BILL_CUMULATE_W_DDS,?"
          ?27?+"??M_CUST,?"
          ?28?+"??M_CUST_A,?"
          ?29?+"??M_CUR,?"
          ?30?+"??M_EXCH_RATE_A,?"
          ?31?+"??(?"
          ?32?+"????SELECT?"
          ?33?+"??????'1'?AS?UN_TYPE,?"
          ?34?+"??????C.CUST_CD?AS?CUST_CD,?"
          ?35?+"??????C.SALES_DATE?AS?SALES_DATE,?"
          ?36?+"??????C.SLIP_CD?AS?SLIP_CD,?"
          ?37?+"??????C.SALES_SEQ_NO,?"
          ?38?+"??????'',?"
          ?39?+"??????D.VEND_TYP?AS?DDS_TORI_TYP_ALL_U,?"
          ?40?+"??????''?AS?DDS_TORI_TYP_ALL_N,?"
          ?41?+"??????C.CUST_ODR_NO?AS?CUST_ODR_NO,?"
          ?42?+"??????D.BOUND_CD?AS?BOUND_CD,?"
          ?43?+"??????C.ITEM_NAME?AS?ITEM_NAME_U,?"
          ?44?+"??????TO_NUMBER('')?AS?ITEM_NAME_N,?"
          ?45?+"??????C.UPDATED_BY?AS?UPDATED_BY,?"
          ?46?+"??????C.SALES_QTY?AS?SALES_QTY,?"
          ?47?+"??????D.UNIT_COST_TYP?AS?UNIT_COST_TYP,?"
          ?48?+"??????C.SALES_UNIT_PRICE?AS?SALES_UNIT_PRICE_EXCH_RATES,?"
          ?49?+"??????C.SALES_AMOUNT_EXCH_RATES?AS?SALES_AMOUNT_EXCH_RATES,?"
          ?50?+"??????C.SALES_UNIT_PRICE?AS?SALES_UNIT_PRICE,?"
          ?51?+"??????C.SALES_AMOUNT?AS?SALES_AMOUNT,?"
          ?52?+"??????TO_NUMBER('')?AS?DEPO_AMOUNT,?"
          ?53?+"??????TO_NUMBER('')?AS?FOREIGN_AMOUNT,?"
          ?54?+"??????D.SALES_TYP?AS?SALES_TYP?"
          ?55?+"????FROM?"
          ?56?+"??????T_SALES?C,?"
          ?57?+"??????T_SALES_A?D?"
          ?58?+"????WHERE?"
          ?59?+"??????C.SALES_DATE?>?ADD_MONTHS(?,?-?1)?"
          ?60?+"??????AND?C.SALES_DATE?<=???"
          ?61?+"??????AND?D.VEND_TYP?IN?(?"
          ?62?+"????????SELECT?"
          ?63?+"??????????SYS_TYPE_VALUE.VALUE?"
          ?64?+"????????FROM?"
          ?65?+"??????????SYS_TYPE_VALUE?"
          ?66?+"????????WHERE?"
          ?67?+"??????????SYS_TYPE_VALUE.NAME?=?'DDS_TORI_TYP_ALL'?"
          ?68?+"??????)?"
          ?69?+"??????AND?D.UNIT_COST_TYP?IN?(?"
          ?70?+"????????SELECT?"
          ?71?+"??????????SYS_TYPE_VALUE.VALUE?"
          ?72?+"????????FROM?"
          ?73?+"??????????SYS_TYPE_VALUE?"
          ?74?+"????????WHERE?"
          ?75?+"??????????SYS_TYPE_VALUE.NAME?=?'UNIT_COST_TYP'?"
          ?76?+"??????)?"
          ?77?+"??????AND?C.SALES_SEQ_NO?=?D.SALES_SEQ_NO?"
          ?78?+"??UNION?"
          ?79?+"????SELECT?"
          ?80?+"??????'2',?"
          ?81?+"??????G.DEPO_SALES_CD,?"
          ?82?+"??????G.DEPO_DATE,?"
          ?83?+"??????G.DEPO_CTL_NO,?"
          ?84?+"??????TO_NUMBER(''),?"
          ?85?+"??????H.DEPO_DTL_LINE,?"
          ?86?+"??????TO_NUMBER(''),?"
          ?87?+"??????'入金',?"
          ?88?+"??????'',?"
          ?89?+"??????'',?"
          ?90?+"??????'',?"
          ?91?+"??????H.DEPO_CLASS,?"
          ?92?+"??????H.UPDATED_BY,?"
          ?93?+"??????TO_NUMBER(''),?"
          ?94?+"??????TO_NUMBER(''),?"
          ?95?+"??????TO_NUMBER(''),?"
          ?96?+"??????TO_NUMBER(''),?"
          ?97?+"??????TO_NUMBER(''),?"
          ?98?+"??????TO_NUMBER(''),?"
          ?99?+"??????H.DEPO_AMOUNT,?"
          100?+"??????H.FOREIGN_AMOUNT,?"
          101?+"??????''?"
          102?+"????FROM?"
          103?+"??????T_M_DEPOSIT_DDS?G,?"
          104?+"??????T_M_DEPOSIT_M_DDS?H?"
          105?+"????WHERE?"
          106?+"??????G.DEL_FLG?=?'0'?"
          107?+"??????AND?H.DEL_FLG?=?'0'?"
          108?+"??????AND?G.DEPO_DATE?>?ADD_MONTHS(?,?-?1)?"
          109?+"??????AND?G.DEPO_DATE?<=???"
          110?+"??????AND?H.DEPO_CLASS?IN?(?"
          111?+"????????SELECT?"
          112?+"??????????SYS_TYPE_VALUE.VALUE?"
          113?+"????????FROM?"
          114?+"??????????SYS_TYPE_VALUE?"
          115?+"????????WHERE?"
          116?+"??????????SYS_TYPE_VALUE.NAME?=?'DDS_DEPO_CLASS'?"
          117?+"??????)?"
          118?+"??????AND?G.DEPO_CTL_NO?=?H.DEPO_CTL_NO?"
          119?+"??)?A?"
          120?+"WHERE?"
          121?+"??AND?T_BILL_CUMULATE_W_DDS.BILL_CLOSE_DATE?=???"
          122?+"??AND?M_EXCH_RATE_A.CUR_CD?=?M_CUR.CUR_CD?"
          123?+"??AND?TO_CHAR(M_EXCH_RATE_A.EXCH_START_DATE,?'YYYYMM')?=?TO_CHAR(A.SALES_DATE,?'YYYYMM')?"
          124?+"??AND?TO_CHAR(M_EXCH_RATE_A.EXCH_START_DATE,?'DD')?<?TO_CHAR(A.SALES_DATE,?'DD')?"
          125?+"??AND?M_CUST.CUST_CD?=?M_CUST_A.CUST_CD?"
          126?+"??AND?M_CUST.CUST_CD?=?T_BILL_CUMULATE_W_DDS.CUST_CD?"
          127?+"??AND?T_BILL_CUMULATE_W_DDS.CUST_CD?=?A.CUST_CD?"
          128?+"ORDER?BY?"
          129?+"??M_CUST.CUST_CD,?"
          130?+"??A.SALES_DATE,?"
          131?+"??A.SLIP_CD"

          ■例二,注意左連接的使用。
            ★詳細(xì)式樣中的SQL文(部分):
          ③畫面入力値をもとに、[支払データ]、[支払データ明細(xì)]、[通貨]結(jié)合し、検索する。
          ?[
          支払データ]の検索條件
            [
          支払データ].作成者 = 畫面.処理擔(dān)當(dāng)
            [
          支払データ].削除フラグ?。健?
           畫面から出力済再出力が選択された場合
            [
          支払データ].抽出フラグ =?。?br /> 畫面から出力済再出力が選択しない場合
            [
          支払データ].抽出フラグ?。健。?br />?[支払データ]、[支払データ明細(xì)]の結(jié)合條件
            [
          支払データ].支払番號?。健支払データ明細(xì)].支払番號
          ?[
          支払データ]、[通貨]の結(jié)合條件
            [
          支払データ].通貨コード?。健通貨].通貨コード
          ?支払區(qū)分取得
            抽出項(xiàng)目:?[
          コンボボックスデータ].表示説明
            テーブル:コンボボックスデータ (LEFTJOIN
            取得條件:
              [
          支払データ明細(xì)].支払區(qū)分?。健?span>[コンボボックスデータ].値
              [
          コンボボックスデータ].名稱?。健?DDS_PAY_CLASS'
          ?経費(fèi)科目取得
            抽出項(xiàng)目:?[
          コンボボックスデータ].表示説明
            テーブル:コンボボックスデータ?。?font color="#ff0000">LEFTJOIN)
            取得條件:
              [
          支払データ明細(xì)].経費(fèi)科目?。健コンボボックスデータ].値
              [
          コンボボックスデータ].名稱 = 'DDS_PAY_MANAGE_ITEM'
            ★對應(yīng)的SQL文(部分):
          ?1??SELECT??
          ?2??????A.PAY_SALES_CD,??
          ?3??????A.PAY_SALES_NAME,??
          ?4??????A.PAY_DATE,??
          ?5??????A.PAY_CTL_NO,??
          ?6??????A.PAY_DEPO_DTL_LINE,??
          ?7??????A.PAY_FSUM_AMOUNT,??
          ?8??????A.PAY_SUM_AMOUNT,??
          ?9??????A.PAY_BILL_DATE,??
          10??????A.PAY_BILL_NO,??
          11??????A.CUR_SYMBOL,??
          12??????A.PAY_DEPO_SUMMARY,??
          13??????B.DISPLAY_NAME,??
          14??????C.DISPLAY_NAME,??
          15??????D.DISPLAY_NAME,??
          16??????E.DISPLAY_NAME???
          17???FROM(??
          18???????SELECT??
          19?????????T_M_PAYMENT_DDS.PAY_SALES_CD?AS?PAY_SALES_CD,??
          20?????????T_M_PAYMENT_DDS.PAY_SALES_NAME?AS?PAY_SALES_NAME,??
          21?????????T_M_PAYMENT_DDS.PAY_DATE?AS?PAY_DATE,??
          22?????????T_M_PAYMENT_DDS.PAY_CTL_NO?AS?PAY_CTL_NO,??
          23?????????T_M_PAYMENT_M_DDS.PAY_DEPO_DTL_LINE?AS?PAY_DEPO_DTL_LINE,??
          24?????????T_M_PAYMENT_M_DDS.PAY_FSUM_AMOUNT?AS?PAY_FSUM_AMOUNT,??
          25?????????T_M_PAYMENT_M_DDS.PAY_SUM_AMOUNT?AS?PAY_SUM_AMOUNT,??
          26?????????T_M_PAYMENT_M_DDS.PAY_BILL_DATE?AS?PAY_BILL_DATE,??
          27?????????T_M_PAYMENT_M_DDS.PAY_BILL_NO?AS?PAY_BILL_NO,??
          28?????????T_M_PAYMENT_M_DDS.PAY_MANAGE_ITEM?AS?PAY_MANAGE_ITEM,??
          29?????????T_M_PAYMENT_M_DDS.PAY_DEPO_SUMMARY?AS?PAY_DEPO_SUMMARY,??
          30?????????T_M_PAYMENT_M_DDS.PAY_CLASS?AS?PAY_CLASS,??
          31?????????T_M_PAYMENT_M_DDS.PAY_BANK_NAME?AS?PAY_BANK_NAME,??
          32?????????T_M_PAYMENT_M_DDS.PAY_ORG_NAME?AS?PAY_ORG_NAME,??
          33?????????M_CUR.CUR_SYMBOL?AS?CUR_SYMBOL??
          34???????FROM??
          35?????????T_M_PAYMENT_DDS,??
          36?????????T_M_PAYMENT_M_DDS,??
          37?????????M_CUR??
          38???????WHERE??
          39?????????T_M_PAYMENT_DDS.PAY_CTL_NO?=?T_M_PAYMENT_M_DDS.PAY_CTL_NO??
          40?????????AND?T_M_PAYMENT_DDS.PAY_CUR_CD?=?M_CUR.CUR_CD??
          41?????????AND?T_M_PAYMENT_DDS.CREATED_BY?=????
          42?????????AND?T_M_PAYMENT_DDS.CREATED_DATE?>=????
          43?????????AND?TO_CHAR(T_M_PAYMENT_DDS.CREATED_DATE,?'YYYY/MM/DD')?<=????
          44?????????AND?T_M_PAYMENT_DDS.DEL_FLG?=?0??
          45?????????AND?T_M_PAYMENT_DDS.PAY_FLG?=?0??
          46?????????AND?T_M_PAYMENT_DDS.SELECT_FLG?=????
          47???????ORDER?BY??
          48?????????T_M_PAYMENT_DDS.PAY_CTL_NO,??
          49?????????T_M_PAYMENT_M_DDS.PAY_DEPO_DTL_LINE??
          50?????)?A?LEFT?JOIN(??
          51???????SELECT??
          52?????????SYS_TYPE_VALUE.DISPLAY_NAME?AS?DISPLAY_NAME,??
          53?????????SYS_TYPE_VALUE.VALUE?AS?VALUE??
          54???????FROM??
          55?????????SYS_TYPE_VALUE??
          56???????WHERE??
          57?????????SYS_TYPE_VALUE.NAME?=?'DDS_PAY_CLASS'??
          58?????)?B?ON?A.PAY_CLASS?=?B.VALUE?LEFT?JOIN(??
          59???????SELECT??
          60?????????SYS_TYPE_VALUE.DISPLAY_NAME?AS?DISPLAY_NAME,??
          61?????????SYS_TYPE_VALUE.VALUE?AS?VALUE??
          62???????FROM??
          63?????????SYS_TYPE_VALUE??
          64???????WHERE??
          65?????????SYS_TYPE_VALUE.NAME?=?'DDS_PAY_MANAGE_ITEM'??
          66?????)?C?ON?A.PAY_MANAGE_ITEM?=?C.VALUE?LEFT?JOIN(??
          67???????SELECT??
          68?????????SYS_TYPE_VALUE.DISPLAY_NAME?AS?DISPLAY_NAME,??
          69?????????SYS_TYPE_VALUE.VALUE?AS?VALUE??
          70???????FROM??
          71?????????SYS_TYPE_VALUE??
          72???????WHERE??
          73?????????SYS_TYPE_VALUE.NAME?=?'DDS_PAY_BANK_NAME'??
          74?????)?D?ON?A.PAY_BANK_NAME?=?D.VALUE?LEFT?JOIN(??
          75???????SELECT??
          76?????????SYS_TYPE_VALUE.DISPLAY_NAME?AS?DISPLAY_NAME,??
          77?????????SYS_TYPE_VALUE.VALUE?AS?VALUE??
          78???????FROM??
          79?????????SYS_TYPE_VALUE??
          80???????WHERE??
          81?????????SYS_TYPE_VALUE.NAME?=?'DDS_PAY_ORG_NAME'??
          82?????)?E?ON?A.PAY_ORG_NAME?=?E.VALUE?
          posted on 2006-12-18 11:44 小言身寸 閱讀(882) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫/SQL語言
          主站蜘蛛池模板: 周宁县| 丰宁| 鄄城县| 灌南县| 徐州市| 泽库县| 弋阳县| 岑溪市| 谢通门县| 申扎县| 沧源| 焉耆| 香河县| 五常市| 岢岚县| 武山县| 楚雄市| 西畴县| 长乐市| 天气| 无棣县| 开鲁县| 淳化县| 青岛市| 扶绥县| 彩票| 北宁市| 万山特区| 明星| 哈密市| 扎鲁特旗| 柳江县| 灵山县| 喀喇沁旗| 台州市| 淳安县| 漳浦县| 鹰潭市| 年辖:市辖区| 松桃| 宝兴县|