2016-05-18 87 views
0

外部選擇中的字段c.Mcc和c.Mnc沒有得到填充事件,儘管我在bd:RawDebug.CarrierDetails中有這些字段。從左連接中的第二個表中選擇字段

任何幫助,將不勝感激。

SELECT d.Id, d.DebugReason, d.DebugData, d.d1, d.d2, c.Mcc, c.Mnc 
FROM 
(SELECT 
Id, DebugReason, DebugData, 
INTEGER(SUBSTR(DebugData,0,3)) AS d1, 
SUBSTR(REGEXP_REPLACE(DebugData,'[^a-zA-Z0-9]',' '),4,LENGTH(DebugData)-3) as d2 
FROM TABLE_DATE_RANGE([bd:RawDebug.T],TIMESTAMP('2016-05-16'),TIMESTAMP('2016-05-16')) 
WHERE DebugReason = 50013 and Id = 550661626 LIMIT 50) AS d 
LEFT JOIN 
(
    SELECT Network, Mcc, STRING(Mnc) as Mnc from [bd:RawDebug.CarrierDetails] 
) AS c 
ON c.Mcc = d.d1 and c.Mnc = d.d2 
LIMIT 50 
+0

當你使用'left outer join'時,右表中的字段可以是'NULL'。對於一個測試,你應該在'limit 50'之前加上'where c.MCC不爲空'並且看看結果是否有 –

+0

這可能是你在CarrierDetails中有這些字段的情況,但是連接正在尋找來自如果我沒有弄錯的話,選擇d是由一個Id-550661626限制的。 – Chris

+0

對於Id = 550661626,我得到d.d1爲310,d.d2爲410.在CarrierDetails表中,我有一個入口形式Mcc = 310 Mnc = 410.但我想知道爲什麼c.Mcc和c.Mnc沒有得到滿足。 – user3447653

回答

0

如果c.Mccc.Mnc是你的結果NULL,但有在[bd:RawDebug.CarrierDetails]表中的值,那麼唯一的解釋是LEFT JOIN標準。你應該再看一下ON c.Mcc = d.d1 and c.Mnc = d.d2的條件,並確保它確實與你的數據匹配。[bd:RawDebug.CarrierDetails]

相關問題