Java 组合多个表的SQL语法
我需要显示一个列表,按日期排序,其中包含不同类型的数据、图像、视频等等 我想您可以为每种类型使用一个单独的表,并使用类似于完全外部联接(模拟为sqlite不支持)的方式,并按日期排序。但这会很复杂,因为我仍然需要在所有表中都有唯一的ID 也许有一个包含ID和日期的主列表,然后加入类型表?但是使用sqlite的性能有多差?我真的很想避免拥有一个超级表,其中包含所有组合类型可能需要的列Java 组合多个表的SQL语法,java,sql,android,sqlite,Java,Sql,Android,Sqlite,我需要显示一个列表,按日期排序,其中包含不同类型的数据、图像、视频等等 我想您可以为每种类型使用一个单独的表,并使用类似于完全外部联接(模拟为sqlite不支持)的方式,并按日期排序。但这会很复杂,因为我仍然需要在所有表中都有唯一的ID 也许有一个包含ID和日期的主列表,然后加入类型表?但是使用sqlite的性能有多差?我真的很想避免拥有一个超级表,其中包含所有组合类型可能需要的列 想法呢?这是您希望在数据库中执行的操作吗?我猜在代码中,您可以将数据映射到不同类型的对象(例如,类视频,类图像…)
想法呢?这是您希望在数据库中执行的操作吗?我猜在代码中,您可以将数据映射到不同类型的对象(例如,
类视频
,类图像
…),这样您也可以将数据组合在一起。您应该尝试构建并查看您得到的性能影响。SQLite是一个速度非常快的引擎,在移动设备上闪存速度较慢。但即使有上万条记录,你也能得到快速的查询
在没有性能影响之前,不应该对其进行欺骗。我知道有三种模式可以将类层次结构映射到关系数据库的表:
增编: 假设您有一个对象层次结构,其中包含一个
Person
类和两个子类Student
和Teacher
。在2.中,您将创建两个表,STUDENT和TEACHER,这两个表都有一个列名。学生表有一个额外的列YEAR,而教师表有一个列SALARY。您的查询可能如下所示:
SELECT 'STUDENT' AS TYPE, NAME, YEAR, NULL AS SALARY FROM STUDENT
UNION SELECT 'TEACHER' AS TYPE, NAME, NULL AS YEAR, SALARY FROM TEACHER
然后,您可以检索并使用它用数据填充对象,或使用
SimpleCorsorAdapter
或任何您喜欢的工具进行显示。是的,这是我想在数据库中执行的操作。我不明白你回答的另一部分:为你的不清楚感到抱歉。我的想法是,如果数据库中有不同类型的数据,比如说有视频(id,date…)和图像(id,date…),那么也可以使用与Java类相同的类型。这使您能够在代码中进行排序。我猜你目前没有做任何对象关系映射?你能告诉我们你的想法的表模式吗?当然,但我主要想知道这是否是一个好的数据库模式。我是否应该使用主列表?我将创建一个名为listentry
的表,其中包含id、日期等。。。然后使用附加表存储特定类型的附加数据,例如listentry\u comments
、listentry\u images
、listentry\u video
。然后对附加表进行多个左联接?可以联接,也可以在需要时执行另一个查询以显示这些数据。请注意,列表中并没有显示所有的值,只是显示项目的名称,没有必要为此而加入表。啊,是的。我需要加入,因为我想在线显示(至少一些)东西,比如图像。谢谢你能举例说明一下吗?或者只告诉我如何进行查询?但这要求您使用have-have-same列(null-as-year)。如果不这样做,就没有办法做到这一点吗?就像在主表上使用联接一样。我自己也试过了,但由于连接使用最后一条语句,所以无法找出如何针对每个连接的主表进行连接。类似于这样的情况,只是所有连接都针对条目表: