0

所以我有三个表,每个表都有不同的列和一个超类表。对于超类表和它自己的表中的每个实体,我都有一个唯一的 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"
4

1 回答 1

1

嵌套查询可以用作 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 的区别。

于 2012-08-01T16:41:24.730 回答