2016-06-09 86 views
0

我想加入兩個表之間有條件加入以忽略空值

例如,

Label Name 
-------------- 
UK  United Kingdom 
EU  Europe 
LON  London 

Region Country  City  Amount 
EU  [NULL]  [NULL] 100.00 
EU  UK   [NULL] 50.00 
EU  UK   LON  20.00 

我想,所以我必須在標籤的兩個錶鏈接,這樣的表如下:

Region Code Region Country Code Country City Code City Amount 
EU   Europe [NULL]   [NULL] [NULL]  [NULL] 100.00 
EU   Europe UK    United... [NULL]  [NULL] 50.00 

等等

我有麻煩聯繫起來 - 我想說的如果它的null不擔心獲得一個標籤。我做了一些左外連接,但速度非常慢。有沒有一種直接的方式來加入條件?

非常感謝, 麗迪雅。

回答

0

「如果它爲空,那麼不用擔心得到一個標籤」所以..如果標籤爲空,那麼就讓它爲空?不要擔心條件,只需加入並允許空值來完成。

SELECT t1.region, 
    t1.country as country_code, 
    t2.name as country, 
    t1.city as city_code, 
    t3.name as city, 
    t1.amount 
FROM mainTable t1 
    LEFT OUTER JOIN labelTable t2 ON 
     t1.country = t2.label 
    LEFT OUTER JOIN labelTable t3 ON 
     t1.city = t3.label 

Name領域(無論是由於現有labelnullname,或者因爲label不存在labeltable)將Null只要你想。

+0

非常感謝JNevill。這確實有效,但運行需要很長時間,所以我可能會調查其他選項。 –

+0

考慮將您加入這三個表的字段建立索引。在將數據反規範化到第4個表格並且直接查詢它的情況下,Indexing在這裏是最好的。 – JNevill

+0

謝謝 - 這是有幫助的 –