所以我有三个表,每个表都有不同的列和一个超类表。对于超类表和它自己的表中的每个实体,我都有一个唯一的id。
我希望将这三个表联合起来,然后根据id将结果与超类表结合起来。
我该如何解决这个问题?我只有唯一的ID,没有其他信息。
修改 我尝试了你的建议,但得到了这个例外:
08-01 18:49:05.365: E/AndroidRuntime(10737): Caused by:
android.database.sqlite.SQLiteException: SELECTs to the left and right of UNION do not
have the same number of result columns: , while compiling: SELECT * FROM ((SELECT * FROM
pois UNION SELECT * FROM routes UNION SELECT * FROM events) t INNER JOIN features ON (pid
= t.features_pid)) WHERE pid = "poi2114"
答案 0 :(得分:0)
嵌套查询可以作为FROM子句中的表。
select * from (
select ID from TableA
union
select ID from TableB) ab inner join TableX x on ab.ID = x.FooID
构建的表ab
中的字段名称遵循构成ab
的第一个选择中的名称。因此,如果TableB中的字段被称为其他字段,它仍将位于ID列下。这就是UNION查询工作的方式。
另外,请注意UNION ALL / UNION DISTINCT的区别。