Sqlite UNION

前端之家收集整理的这篇文章主要介绍了Sqlite UNION前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

不知道在android开发的过程中有没有遇到锅这样的情形,两个实体,有各自的属性特征,可是又有相似的属性,在设计表的时候就比较纠结。一种方案,设计成一张表,这样做的好处是相似的属性可以公用一个字段,而且更重要的是,这样的相似的实体往往还会在UI上显示在一个listview,这样用一个cursor,方便大量数据的显示。可是这样也有不好的地方,首先在结构上,一个实体扩展的时候,改表结构,另一个实体不可避免的也会受到影响,而且在数据结构上也不清晰。

那么怎么解决两张表的情况下,在一个listview显示的需求呢?这个时候用view来做一个临时表,我认为是一个不错的选择。

例如下表:一个sms表有body字段和tel字段

create table sms (
_id integer,body text,tel text
)

表二:mms表,有text字段和attachment字段,和sms一样都有tel字段
create table mms (
_id integer,text text,tel text,attachment text
)
那接下来怎么做一个临时的view来合并两张表呢?可以使用union,可是union要求两个表字段必须相同列数,并且字段类型相似,这个我们用as来做列扩展

如下:

create view sms_mms2 as
select _id,body,tel,null as text,null as attachment,'sms' as type from sms
union
select _id,null as body,text,attachment,'mms' as type from mms
这样在listview显示的时候可以用type来区分,而且数据又在一个cursor里。

猜你在找的Sqlite相关文章