2014-10-30 52 views
-1

我有兩個表格:scanspersonel。在scans中有一列createdby,其中創建掃描的人員的用戶名在那裏。我需要創建一個視圖來查看這些掃描,而不是用戶名,我想查看錶personel中的該人員的全名。該查詢主要作品:在一個表格中輸出不存在另一個表格的行

select personel.firstname ||' '|| personel.lastname as CREATEDBY 
from scans inner join personel on scans.createdby = personel.username; 

的問題是,有在scans.createdby這不再是不在personel表中的一些用戶名和它們的掃描由上面的查詢,因爲值在createdby欄中並未檢索不匹配username列中的任何值。

因此,對於這種情況,我想爲這些掃描輸出createdby的值。

所以,如果:

scans.createdby = personel.username =>顯示全名

但如果:

scans.createdby不從,而不是全名scans.createdby匹配任何personel.username =>顯示用戶名

+0

請參閱[這個答案](http://stackoverflow.com/a/3308153/173497)到SO問題[mysql - 如何決定何時使用正確的連接/左連接或內部連接或如何確定哪個表是哪一邊?](http://stackoverflow.com/questions/3308122/how-do-i-decide-when-to-use-right-joins-left-joins-or-inner-joins -or-how-to-dete) – 2014-10-30 14:30:10

回答

2
​​
+0

對不起,重新訪問 – 2014-10-30 14:29:09

+0

實際上,對於最後的版本,當沒有usernsme時,我會得到空的條目。在修改之前,這很好:) 也不得不使用NVL函數來代替ISNULL,但這是我的壞,我沒有指定之前。謝謝你的回答! – 2014-10-30 14:53:53

2

您想要從scanspersonel和yo你應該使用coalesce操作符(例如ISNULLCOALESCE)或者在查詢結果中創建CREATEDBY列的函數。

2
select case when personel.username is null then scans.createdby else personel.firstname ||' '|| personel.lastname end as CREATEDBY 
from scans left outer join personel on scans.createdby = personel.username; 
+0

謝謝!這個也很棒! – 2014-10-30 14:59:50

相關問題