PostgreSQLを使用しております。
それぞれ、TABLE1とTABLE1があり、
TABLE1 a-1 a-2 b-1
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1 bbb aaa ddd
2 ggg bbb ccc
3 bbb mmm ddd
4 ggg mmm ccc
:
TABLE2 a-1 a-2 c-1
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1 bbb aaa eee
2 ggg mmm qqq
:
質問1.
TABLE1.a-1=TABLE2.a-1 and TABLE1.a-2=TABLE2.a-2
を条件にして結合 したい場合、どのように結合すればよいのか。
期待結果 a-1 a-2 b-1 c-1
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1 bbb aaa ddd eee
2 ggg bbb ccc ※
3 bbb mmm ddd ※
4 ggg aaa ccc qqq
※は空白でもNULLでもよい
質問2.
上記が可能な場合にさらに質問です。
TABLE1およびTABLE2が、SELECT,WHEREによって抽出されたものとした場合、
1つのSQL文で質問1と同様の出力にするにはどのように結合すればよいのか。(はたまた無謀なのか)
知識不足のため悩んでいる状況なので、
どなた様か知識がある方にご教授願いたく思います。
No.2ベストアンサー
- 回答日時:
どこが具体的に分からないのでしょうか?
>期待結果 a-1 a-2 b-1 c-1
> ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
> 1 bbb aaa ddd eee
> 2 ggg bbb ccc ※
> 3 bbb mmm ddd ※
> 4 ggg aaa ccc qqq
>※は空白でもNULLでもよい
4番目の値を間違っていませんか?
4 ggg mmm ccc qqq ですよね?
1~4の通番も値として持つのですか?
列名に「-」を使うのですか?
その場合、減算と区別するために、「"」で囲む必要がありますよ?
PostgreSQLのバージョンは何ですか?
あまりに古いと、具体例を提示しても、wanton_dogの環境では実行できないかも知れません。
以下の例は、TABLE1に通番の列(seqno)があるものとします。
-- EX1
-- 簡単なLEFT OUTER JOIN(結合のための列が2個)
select
seqno,
t1."a-1",t1."a-2","b-1","c-1"
from table1 as t1
left join table2 as t2
on t1."a-1"=t2."a-1" and t1."a-2"=t2."a-2"
;
-- EX2
-- EX1のSQLを、nullの場合、値を置き換える
-- nullを判別する関数は複数あったり、RDBMSにより違う。
-- coalesce関数は、主要なRDBMSで実装されている
select
seqno,
t1."a-1",t1."a-2",
coalesce("b-1",'BLANK') as "b-1",
coalesce("c-1",'BLANK') as "c-1"
from table1 as t1
left join table2 as t2
on t1."a-1"=t2."a-1" and t1."a-2"=t2."a-2"
;
-- EX3
-- EX1のSQLを、インラインビューから得る形に変える
select
seqno,
t1."a-1",t1."a-2","b-1","c-1"
from (select * from table1) as t1
left join (select * from table2) as t2
on t1."a-1"=t2."a-1" and t1."a-2"=t2."a-2"
;
-- EX4
-- EX1のSQLを、行値構成子(行値式)を使用する形に変更する。
select
seqno,
t1."a-1",t1."a-2","b-1","c-1"
from table1 as t1
left join table2 as t2
on (t1."a-1",t1."a-2")=(t2."a-1",t2."a-2")
;
回答どうもありがとうございます。
まず、質問にいろいろと不備があったことをお詫びします。
質問した内容はEX1のLEFT JOINで解決しました。
その他特にEX2のNULLを置き換える手法は非常に参考になりました。
ありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文の長さ制限について
-
IDとパスワードについて。
-
selectの単純繰り返し
-
Accessの構成をコピーしたい
-
データベース ユーザの「このユ...
-
SELECTした結果に行番号を求めたい
-
新宿、池袋付近でお勧めの焼き...
-
truncate tableを使って複数の...
-
PostgreSQLのUPDATE文につきまして
-
【エクセル/excel】if関数とフラグ
-
sqlite select 表示されない
-
PHP+SQL在庫集計で在庫の累計が...
-
ストアドプロシジャーでDBの自...
-
SELECTした結果をSELECTしたい!
-
MySQL: 複数テーブルのcount
-
フラグをたてるってどういうこ...
-
SELECT文で足し算をした場合、N...
-
CPRM decrypterのエラーコード...
-
現在、VBAにてUNICODEのCSVを出...
-
ご覧ください、ご参照ください...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLで期間をずらした集計処理
-
SQLのこと:distinctして並び替...
-
SQL文の長さ制限について
-
Postgresql Mecabでの解析について
-
SQLで2年連続で値が上昇した年...
-
PostgreSQL で自動採番する方法
-
SQL 複数条件を設定
-
SQL 複数条件を設定
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
スキーマ
-
sqlに記述できない文字
-
オラクルのUPDATEで複数テーブル
-
Accessで今日から5日後
-
timestampのデータはどのように...
-
UPDATEで既存のレコードに文字...
おすすめ情報