如何结合3个表并将其与SQLite中的另一个表连接起来

时间:2012-08-01 16:38:19

标签: android sqlite

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

1 个答案:

答案 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的区别。