我正在做一个安卓项目..而且这个平台并不那么熟悉......
我必须使用公共列对我的数据库中的3个表进行排序。下面给出了表格详细信息...
表位置 (字符串日期, 字符串日, 字符串时间, String location_address, 字符串纬度, 字符串经度, 很长一段时间InMilli)
表格 (字符串名称, 字符串编号, 字符串类型, 字符串日期, 字符串时间, 字串持续时间 很长一段时间InMilli)
表短信 (字符串日期, 字符串时间, 字符串类型, 字符串添加, 字符串联系, String sub, 字符串消息, 很长一段时间InMilli)
我必须根据timeInMilli列对这些表进行排序......
任何人PLZ帮助我,,,我需要代码,因为我的项目submsn日期是10月23日... PLZ帮助我...提前感谢...
答案 0 :(得分:2)
要仅连接多个查询的结果,请使用UNION ALL;结果的列名取自第一个子查询:
SELECT rowid AS ID, 'call' AS c_or_s_or_l, date, timeInMilli FROM call
UNION ALL
SELECT rowid, 'SMS', date, timeInMilli FROM SMS
UNION ALL
SELECT rowid, 'location', date, timeInMilli FROM Location
ORDER BY timeInMilli
答案 1 :(得分:0)
我不一定了解SQLite中的语法差异,但我可以在Oracle中向您展示一个示例,但概念将保持不变。
所以我设置了一个数据子集。表MLOCATION,MCALL和SMS。 MLOCATION包含日期,日期和时间。 MCALL包含名称,编号,日期和时间。 SMS包含日期,类型,消息和timeinmilli。所以当你注意到我必须在所有专栏中都有'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以测试您自己的表和模式。
还要竖起那个最初指向我这个方向的人 - peterm。