作者 主題: [問題]inner join And View  (閱讀 5918 次)

0 會員 與 1 訪客 正在閱讀本文。

nicklin

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
[問題]inner join And View
« 於: 2003-06-22 06:52 »
請問各位資料庫高手,在oracle裡,可以inner join 一個 view嗎?還是一定得是有實體的table才可以作inner join,因為小弟我想要view裡的一個數值作計算然後更新table A裡的一個位置,我之前有想說用這樣的:
update A set xx=(select yy from view where code=1) * 2.5 where code=1
不過這樣的話,只有更新code=1的那個record,而我想要一次全部更新耶……怎麼辦咧……還是有其它方法呢……我是希望全部的過程能在資料庫裡完成……請賜教囉……3q3q

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5411
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
[問題]inner join And View
« 回覆 #1 於: 2003-06-22 11:03 »
可以. 但是要小心, 注意一下 plan 看看, 會不會造成效能比較不好...

update a table_a set
xx = (select view_b.yy from view view_b where view_b.code = table_a.code)

nicklin

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
[問題]我的問題點……
« 回覆 #2 於: 2003-06-22 12:34 »
謝謝啦,不過,這樣好像沒有作到inner join耶,我也不知道它的可能性……就是說把它作成inner join 之後再作update,這樣我就能全部一次更新了,不用說如果我有十個code就得寫十行的update……不知道有沒有人看得懂我的意思… :( ,拜託各位高手囉…

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5411
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
[問題]inner join And View
« 回覆 #3 於: 2003-06-22 12:41 »
你確定跑過上面的 sql 嗎 ?
上面的指令對於 table_a 的每一筆資料都會做異動.

當然, 你必須確定 view_b 中的每一個對應於 table_a.code 的資料只會有一筆才可以.

nicklin

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
3q 3q
« 回覆 #4 於: 2003-06-22 12:46 »
歹勢啦,小弟看錯了啦,多謝多謝,可以跑了