2017-06-20 7 views
1

私は以下のシナリオを持っています。次の構造を持つ3つのテーブルがあります。Postgres SQLテーブルからのSELECTデータIDが存在するエントリ

TABLE A 
-entry_id (PRIMARY KEY, INTEGER) 

TABLE B 
-entry_id (FOREIGN_KEY -> TABLE A) 
-content (TEXT) 

TABLE C 
    -entry_id (FOREIGN_KEY -> TABLE A) 
    -content (INTEGER) 

私は値がちょうど一つのテーブルの中のいずれかであることができるテーブルBまたは表Cからコンテンツセルの値をretriveしたいです。テーブルBまたはCのいずれかの魔法使いには、与えられたentry_idのエントリがあります。

PS。申し訳ありませんが重複が私が必要とするものに一致するものを見つけることができなかった場合。

+0

もで動作する何かをしたいです第4表例: 表D -entry_id(FOREIGN_KEY - >表A) -content(DOUBLE) –

答えて

1

を使用します。

select entry_id, content::text from TABLEB where entry_id = ? 
union all 
select entry_id, content::text from TABLEC where entry_id = ? 
union all 
select entry_id, content::text from TABLED where entry_id = ? 
+0

私の問題は、私がentry_idを持っていて、そのentry_idの値が(値は1つのテーブルとentry_idにしかありません)。したがって、entry_idに基づいて、他の3つのテーブルのうちの1つのコレスポンデントデータを取得します。それは理にかなっていますか? –

+0

@ Cosmin_Victor - すべてのクエリに 'where'節を追加し、編集された答えをチェックしてください。 –

+0

ありがとうございました。 –

1

それは一度に一つのテーブルに存在することができる場合、私が正しく理解していれば、あなたのようなものを必要とする労働組合

select a1.entry_id, b2.content 
from TableA a1 
inner join TableB b2 
on a1.entry_id = b2.entry_id 

union -- This removes any duplicates. Use UNION ALL to show duplicates 

select a1.entry_id, c3.content::text 
from TableA a1 
inner join TableC c3 
on a1.entry_id = c3.entry_id 
+0

'UNION'は重複を削除します。なぜなら、「一度に1つの表にのみ存在する」の理由は何ですか?.. –

+0

1)UNION型整数とテキストはマッチングできません。 –

+0

@Cosmin_Victor mind '、c3.content :: text'キャスト –

関連する問題