2014-09-30 58 views
0

我是SQL新手,只知道基礎知識。如果有人能幫助下面的查詢,我將不勝感激。這將返回字段具有值的所有值,但是對於LO.Filurecode,需要返回該值時存在空值以及識別並填充缺失值。任何人都可以幫助看到下面的酷兒。在查詢中使用多個表返回空值

alter session set current_schema=maximo; 

select 
l.location, 
l.description, 
l.siteid, 
l.type, 
l.status, 
lh.parent, 
lo.failurecode, 
lo.locpriority, 
L.PLUSGSAFETYCRIT, 
L.PLUSGENVCRIT, 
L.PLUSGCOMCRIT, 
L.PLUSGEXREGISTERED, 
l.ta, 
l.taqamanufacturer, 
l.modelnum, 
l.PLUSGLOCREFERENCE, 
l.PLUSGPHYSLOC 
from 
locations l, lochierarchy lh, locoper lo 
where 
l.location = lh.location 
and l.location = lo.location 
and l.siteid = lo.siteid 
and l.siteid = lh.siteid 
and l.type ='OPERATING' 
and lh.systemid ='PRIMARY' 
and l.siteid ='COA' 
order by location 
+1

用戶爲此目的左或右外部加入....這將給你空白數據以及.. – DeDevelopers 2014-09-30 09:29:27

回答

0

這裏是有點重構您的查詢:

SELECT l.location, 
    l.description, 
    l.siteid, 
    l.type, 
    l.status, 
    lh.parent, 
    lo.failurecode, 
    lo.locpriority, 
    l.PLUSGSAFETYCRIT, 
    l.PLUSGENVCRIT, 
    l.PLUSGCOMCRIT, 
    l.PLUSGEXREGISTERED, 
    l.ta, 
    l.taqamanufacturer, 
    l.modelnum, 
    l.PLUSGLOCREFERENCE, 
    l.PLUSGPHYSLOC 
FROM locations l 
LEFT JOIN lochierarchy lh ON lh.location = l.location 
          AND lh.siteid = l.siteid 
          AND lh.systemid = 'PRIMARY' 
LEFT JOIN locoper lo ON lo.location = l.location 
         AND lo.siteid = l.siteid 
WHERE l.type ='OPERATING' 
and l.siteid ='COA' 
ORDER BY l.location 

我用明確的法定的繼承權語法(INNER JOIN, LEFT JOIN),而不是你所使用的舊學校語法。它更具可讀性,並且會更容易理解。

希望這會有所幫助。

+0

感謝喬爾欣賞幫助 – user4094290 2014-09-30 09:35:45

+0

@ user4094290如果查詢解決了你的問題,不要忘了指出你的問題作爲'回答' – 2014-09-30 09:49:48

+0

喬爾我可以問一個問題是否有可能包括null值爲lochierarchy表以及似乎有一些空值在這個表中還當我檢查位置表時,這仍然返回更多的記錄比在一個小房間裏。 – user4094290 2014-09-30 09:49:55