三個錶用同一列做外連線的例子

2021-04-21 22:11:42 字數 672 閱讀 6045

有三幾個表table1 table2 table3 分別儲存了每天夜、白、中三個班的生產記錄;

三個表結構相同:c1(日期)  , c2 (產量)  ,兩列均可為空;並且三個表中的日期並非一一對應;

現在希望通過sql語句獲得查詢結果記錄:日期  、夜班產量、白班產量、中班產量;

下面給出oracle環境下的查詢語句:

select nvl(nvl(t1.c1,t2.c1),t3.c1) ,  t1.c2  ,  t2.c2  ,  t3.c2

from table1 t1   full outer join  table2 t2  on ( t1.c1=t2.c1)

full outer  join table3 t3 on ( t3.c1=t2.c1 or t3.c1=t1.c1) ;

這裡主要需要注意的地方是藍色字型部分,由於第一次外連線的結果中兩個c1都可能為空,

第二次連線根據要求,應該是只要和其中乙個c1相等(同一天)就應該將兩條記錄放在一起。

另外外連線 on 關鍵字是必須的,不能試圖用where來代替

也有另外的表達方式,可以用子查詢的方式,先兩個表做全外連線,其查詢結果再同第三個表做全外連線,再第四個……

用乙個表中的一列值更新另外一表中的一列值

今天寫乙個小儲存過程,呵呵!功能大家試一下就知道了。create proc proc test uid int 0 output,uname nvarchar 50 null output asbegin declare dd cursor scroll for select uid,uname f...

三個自我的對話和陪同(一)

今天又是新的一天,已經是月底最後一天了,翻開日曆明天就是7月的開始,然後就是想著十月的到來!夏天持續乙個月的大雨過去了 接著每天早晨迎接而來的都是燦爛得耀眼的太陽,稍稍走走路,背脊就會微微出汗。感覺夏日的陽光特別漫長,大抵是因為乙個白天都要自己陪自己度過吧 對著日記本寫日記,相當於是對自己說話 對著...

mysql中為同一張表取多個別名 為某一列取別名

select employee1.name as employee from employee employee1,employee employee2 where employee1.managerid employee2.id and employee1.salary employee2.sal...