我們經常會遇到想要把一對多關系轉換成為一對一關系,以方便顯示。例如有如下關系:
Class(ClassID,ClassName)
和
Student(SID,SName,ClassID)
,并且,這兩個關系存在以下測試數據:
Class:
001 |
語文 |
002 |
數學 |
Student :
031231301 |
張三 |
001 |
031231301 |
張三 |
002 |
031231302 |
李四 |
001 |
那么,這兩個關系表達的意思:選語文的有張三和李四;選數學的有李四。如果想做一個視圖(
V_STU_CLA
)來表達這種一對多關系(一門課程,被多個學生所選擇),可以使用一個簡單的左聯語句來完成:
得到的結果如下:



ClassID |
ClassName |
SName |
001 |
語文 |
張三 |
001 |
語文 |
李四 |
002 |
數學 |
張三 |
這樣雖然能夠清晰的表達選課關系,但是,某些情況下,它不如下面這種形式來得一目了然:
ClassID |
ClassName |
SNames |
001 |
語文 |
張三 , 李四 |
002 |
數學 |
張三 |
要達到這樣的目的,需要完成一個一對多關系到一對一關系的轉換。這樣的轉換,在數據庫中,可以借助函數來進行,因為函數中應用到了游標,故對于 Oracle 和 MSSQL 稍有不同,附上兩個版本的函數 SQL 代碼:
MS-SQL
版:
MS-SQL
調用時,通過以下語句實現:
ORACLE
中調用方法類似。































ORACLE版:


















更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
