0

したがって、それぞれが異なる列と 1 つのスーパークラス テーブルを持つ 3 つのテーブルがあります。スーパークラス テーブルと独自のテーブルにあるエンティティごとに一意の ID があります。

3 つのテーブルを結合し、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 に答える