日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle内外链接混合用,混合在一起通过连接,内部连接和总结与Oracle

發布時間:2023/12/4 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle内外链接混合用,混合在一起通过连接,内部连接和总结与Oracle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里是我的設置:

我有2個表分別被稱為“任務”和“時間表” “任務”表是遞歸的,這樣每個任務可以有多個子任務。每個時間表都與一個任務相關聯(不一定是“根”任務),并包含在其上工作的小時數。

實施例:

任務

ID:1 |名稱:任務A | parent_id:NULL

id:2 |名稱:任務A1 | parent_id:1

id:3 |名稱:任務A1.1 | parent_id:2

id:4 |名稱:任務B | parent_id:NULL

id:5 |名稱:任務B1 | parent_id:4

次表

id:1 | task_id:1 |小時:1

id:2 | task_id:2 |小時:3

id:3 | task_id:3 |小時:1

id:5 | task_id:5 |時間:1 ...

我想做的事:

我想要一個查詢,將返回一個“任務層次”工作的所有時間的總和。如果我們看一下前面的例子,這意味著我想得到以下結果:

任務A - 5小時|任務B - 1小時(S)

起初我想這

SELECT TaskName, Sum(Hours) "TotalHours"

FROM (

SELECT replace(sys_connect_by_path(decode(level, 1, t.name), '~'), '~') As TaskName,

ts.hours as hours

FROM tasks t INNER JOIN timesheets ts ON t.id=ts.task_id

START WITH PARENTOID=-1

CONNECT BY PRIOR t.id = t.parent_id

)

GROUP BY TaskName Having Sum(Hours) > 0 ORDER BY TaskName

它幾乎工作。唯一的問題是,如果沒有根任務的時間表,它將跳過整個時間表......但是可能有子時間表的時間表,而這正是在任務B1中發生的情況。我知道這是造成我的問題的“內部連接”部分,但我不知道我該如何擺脫它。

任何想法如何解決這個問題?

謝謝

2010-05-27

Fran?ois

+0

我認為,如果你顛倒表的順序,并使用左外連接,你會得到任務,即使沒有時間片上,從而*威力*工作...也許? –

2010-05-27 15:04:27

+0

感謝您的幫助。在我的情況下進行左連接會導致一些主要的性能問題......即使表格索引良好,并且所有表格都是如此。 –

2010-05-27 15:30:47

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的oracle内外链接混合用,混合在一起通过连接,内部连接和总结与Oracle的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。