2016-05-18 61 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]

相关问题