2016-08-01 18 views
0

私は外部キーで接続されている複数のテーブルからレコードを取得したいアプリケーションで作業しています。私が使用していたクエリがpostgresqlの複数のテーブルからデータを取得する

select ue.institute, ue.marks, uf.relation, uf.name 
    from user_education ue, user_family uf where ue.user_id=12 and uf.user_id=12 

あるクエリの結果は、あなたが、データがそれに繰り返している見ることができます

Result

です。私はレコードを1回だけしたい。私は繰り返しはしたくない。合計行は5

詳細情報です

enter image description here

Result: 

id|name|fid|id|descrip| fid 
1 |A |1 |1|DA  | 1 
2 |B |1 |2|DB  | 1 
2 |B |1 |  

結果は、クエリによってフェッチ:私は、私が欲しいこの

T1     T2 

id|name|fid  id|descrip| fid 
1 |A |1   1|DA  | 1 
2 |B |1   2|DB  | 1 
2 |B |1   

結果のようなものが欲しいです

Table 1

Table 2

私は両方のテーブルから同じuser_idの行をしたいが、あなたは3行があるとT2に2行がT1で見ることができます。私は繰り返しを望んでいないだけでなく、私はuser_id

表スキーマに基づいてすべてのデータを取得したい、あなたがそれを望む理由

T1 T2

+0

質問を編集してmysqlタグを削除できますか? – Philipp

+1

少しのアドバイスを追加するだけです。あなた自身の理解のためにさえ、いくつかの一貫性のあるデータを使ってみてください。 'aaaa'や' aaa'のような例は、あまりにも少ないことを言うのがとても混乱しています。 – antorqs

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-wing-asking-a-question/285557#285557 –

答えて

0

よ私は見ることはできませんが、解決策は、ウィンドウ関数row_number()を使用することができます

SELECT ue.institute, ue.marks, uf.relation, uf.name 
FROM (SELECT institute, marks, row_number() OVER() 
     FROM user_education 
     WHERE user_id=12) ue 
    FULL OUTER JOIN 
    (SELECT relation, name, row_number() OVER() 
     FROM user_family 
     WHERE user_id=12) uf 
    USING (row_number); 

個別に定義された順序がないので結果は、しかし、かなり意味がありません結果セット。

+0

すべてのレコードを取得します。 –

+0

あなたが得たものを分かち合うことで証明してください! –

+0

最新の投稿で確認してください。 –

関連する問題