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, tel, text, attachment, 'mms' as type from mms
这样在listview显示的时候可以用type来区分,而且数据又在一个cursor里。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值