我不一定知道 SQLite 中的语法差异,但我可以向您展示 Oracle 中的示例,但概念将保持不变。
所以我设置了你数据的一个子集。表 MLOCATION、MCALL 和 SMS。MLOCATION 包含日期、日期和时间(毫秒)。MCALL 包含名称、号码、日期和时间(毫秒)。SMS 包含日期、类型、消息和时间(毫秒)。因此,正如您所注意到的,我必须在所有列中都具有共同的“timeinmlili”。
我所做的是根据 timeinmilli 的值合并列。您可以使用列标题指定您想要的任何和所有值,然后选择带有 timeinmilli 的表并说“完全连接”,其中该值等于另一个表中的值。
select coalesce(l.MILLI, c.MILLI, s.MILLI) TIMEINMILLI,
l.DDAY D_DAY,
c.DNAME D_NAME,
c.NUM D_NUMBER,
s.DTYPE D_TYPE,
s.MSG MESSAGE
from MLOCATION l full join MCALL c
on l.MILLI = c.MILLI full join SMS s
on c.MILLI = s.MILLI;
鉴于我创建的表给了我输出:
TIMEINMILLI D_DAY D_NAME D_NUMBER D_TYPE MESSAGE
1381730400000 Monday Thatguy 4786217452 Type1 This is a message
1381903200000 Wednesday Someone 4897414821 Type3 Word
1381989600000 Thursday Nafi 1234567891 Type2 LOL
您还可以看到我在SQLFiddle中提供的完整示例。请记住,我是在 Oracle 中执行此操作的,但是您可以将数据库类型更改为 SQLite 以测试您自己的表和架构。
还要向最初将我指向这个方向的人竖起大拇指 -彼得姆。