多表外連線的使用
目前需要找的報表如下
imie號,一級代理商進貨日期,二級代理商發貨日期,渠道銷售日期,門店銷售日期,型號,實際開機城市,經度,緯度等等
需要查詢的條件是根據一級代理商的code和門店銷售日期(4,5月)找出對應條件內imie的渠道資訊
於是根據上述條件和報頭,以及相應表關係需要將各表連線後取值,在連線時必須考慮外連線的情況
FROM MCS_HQ.MA_DC_SERL T1 --存放從源發貨到目的地的關鍵資訊,如發貨日期等
,MCS_HQ.HI_GSCM_FOTA T2 --存放實際開機資訊,如開機日期,型號
,MCS_HQ.HI_SALE_CHNL T3 --存放渠道銷售資訊
,MCS_HQ.HI_SALE T4 --存放銷售資訊,主要是促銷員報的銷量
,MCS_HQ.HI_GSCM_FOTA_REGN T5 --存放實際開機的地點,如經緯度和城市
,T_RPO T6
WHERE T1.DC_ID = 'CC0541015'
AND T1.DIST_CHNL_DIV = 'HHP'
AND T2.SERL_NO(+) = T1.SERL_NO
AND T3.SERL_NO = T1.SERL_NO
AND T3.SALE_YMD BETWEEN '20150401' AND '20150531'
AND T4.SERL_NO(+) = T1.SERL_NO
AND T5.IMEI(+) = T1.SERL_NO
AND T6.SERL_NO(+) = T1.SERL_NO;
首先這裡有兩個查詢條件是必須遵守的,必須找出的是這個兩個查詢條件中的資料,那麼就應以這兩個查詢條件的結果集為
基準做外連線,也就是說,客戶是CC0541015且銷售日期在4,5月的資料對應的imie都要顯示出來,那麼以這個結果集連線的
其他表都要用外連線。因此這裡T2,T4,T5連線時都用外連線,然後T3沒有用,因為其查詢條件是限定的,因此即便外連線表
根據日期條件還是會選出指定日期的資料,所以T3,表外連線無意義。
這裡因為業務原因一級代理商的code的條件會根據不同基準改變,如按二級代理商的上級代理商為基準,也可以查詢上述報表
但實現相同的邏輯,在各表連線時外連線的使用就不相同
FROM MCS_HQ.MA_DC_SERL T1
,MCS_HQ.HI_GSCM_FOTA T2
,MCS_HQ.HI_SALE_CHNL T3
,MCS_HQ.HI_SALE T4
,MCS_HQ.HI_GSCM_FOTA_REGN T5
,T_RPO T6
WHERE
T3.CHNL_SUPP_DC_ID = 'CC0541015'
AND T1.DIST_CHNL_DIV(+) = 'HHP'
AND T2.SERL_NO(+) = T3.SERL_NO
AND T3.SERL_NO = T1.SERL_NO(+)
AND T3.SALE_YMD BETWEEN '20150401' AND '20150531'
AND T4.SERL_NO(+) = T3.SERL_NO
AND T5.IMEI(+) = T3.SERL_NO
AND T6.SERL_NO(+) = T3.SERL_NO;
實際表連線時將以T3表的上級代理商code為條件,這是將以上級代理商code和銷售日期(4,5)月為基準顯示此結果集中所有imie,
其他表和此結果集連線使用外連線,因此這裡T1,T2,T4,T5都要做表外連線,且他們的查詢條件也要使用外連線,這樣才能
保證兩種方法的查詢結果意義一致
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-1717049/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【janes】多表查詢 外連線
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- 多表的連線
- MYSQL學習筆記23: 多表查詢(自連線內連線+左右外連線)MySql筆記
- oracle 外連線的使用Oracle
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- LEFT JOIN 和JOIN 多表連線
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- 深入理解SQL的四種連線-左外連線、右外連線、內連線、全連線SQL
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- Oracle 左外連線、右外連線、全外連線小總結Oracle
- 內連線、外連線
- SQL語言基礎(多表連線)SQL
- Sql Server系列:多表連線查詢SQLServer
- SQL複雜查詢多表連線SQL
- sybase的外連線
- MySQL學習筆記之多表連線MySql筆記
- 多表連線SQL優化如何處理SQL優化
- MySQL筆記-左連線的使用(left join有關聯的多表查詢)MySql筆記
- sql 內連線和外連線SQL
- 外連線與連線順序
- 內連線、外連線總結
- SQL SERVER 自連線、外連線SQLServer
- SQL優化--多表連線和走索引的關係SQL優化索引
- oracle外連線Oracle
- 例項解析外連線 內連線 自連線 全連線
- 外連線轉換為內連線的情況
- 轉載:內連線與外連線的區別
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- sql和hql中join語句區別,以及hibernate中內連線,迫切內連線,左外連線,迫切左外連線,右外連線的區別(合集)...SQL
- SpringBoot + JPA的自學之路(三)多表連線查詢Spring Boot
- 使用外連線時應注意重複的問題
- 內聯,左外聯,右外聯,全連線,交叉連線 的區別
- sql內連結,外連線SQL
- mysql左外連線MySql
- 行的儲存(塊內連線與塊外連線)
- SQL Server中內連線和外連線的區別SQLServer