2012-08-01 29 views
0

所以我有三個表,每個表都有不同的列和一個超類表。對於超類表和其自己的表中的每個實體,我都有一個唯一的ID。如何將3個表合併成SQLite中的另一個

我想結合這三個表,然後將結果與基於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

你已經完成select * from。但是你應該選擇你正在進行聯合的表中常見的字段。 – Gogu 2012-08-01 16:55:02

+0

嗯好吧,我明白了,但是對於結果,我需要該表的所有列。 – 2012-08-01 16:56:02

+0

您只能選擇所有表中共同使用的字段。你可以在選擇查詢中的其他表中添加虛擬字段,如SELECT null作爲名稱,2作爲數字等來實現它。 – Gogu 2012-08-02 01:18:07

回答

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的區別。

+0

謝謝,請參閱我編輯的帖子以獲取更新。 – 2012-08-01 16:51:20

相關問題