質問するログイン新規登録
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1000閲覧

postgreSQL マスタ、トランザクションの結合について

kabochacha

総合スコア3

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/10/26 12:16

編集2020/10/27 00:30

0

0

前提・実現したいこと

初投稿になります。DB初心者になります。
今回、トランザクションとマスタテーブルが用意されており、トランザクションに
マスタの情報を結合し、view(select文)を作りたいと思っています。

<使用環境>
postgreSQL12
windows10

具体的な内容としては、

マスタ(tm)

装置ID機能コード機能名上限値下限値
A01kinou1湿度測定10010
A01kinou2気温測定500
B01kinou1湿度測定8020
B01kinou2気温測定605
```マスタ
souti_id, kinou_cd, kinou_name, souti_max_limit, souti_min_limit
A01,kinou1,湿度測定,100,10
A02,kinou2,気温測定,50,0
B01,kinou1,湿度測定,100,10
B02,kinou2,気温測定,50,0
```

トランザクション(tr)

装置ID温度測定値気温測定値測定日時
A0165282020/10/26 10:00
A0180262020/10/26 11:00
A0170302020/10/26 12:00
B0155132020/10/26 10:00
B0160202020/10/26 11:00
B0165182020/10/26 12:00
```トランザクション
souti_id, kinou1_val, kinou2_val, measu_date
A01,65,28,2020/10/26 10:00
A01,80,26,2020/10/26 11:00
A01,70,30,2020/10/26 12:00
B01,55,13,2020/10/26 10:00
B01,60,20,2020/10/26 11:00
B01,65,18,2020/10/26 12:00
**出力結果** マスタで設定した、気温測定機能と湿度測定機能の上限と下限を参照し、 トランザクションと結合してselect結果を出力させたい。 (10:00~11:00のみ) tr.装置ID|tr.温度測定値|tm.温度上限値|tm.温度下限値|tr.気温測定値|tm.温度上限値|tm.温度下限値|tr.測定日時| |:--:|--:|--:|--:|--:|--:|--:|--:| |A01|65|100|10|28|50|0|2020/10/26 10:00| |A01|80|100|10|26|50|0|2020/10/26 11:00| |B01|55|80|20|28|60|5|2020/10/26 10:00| |B01|60|80|20|26|60|5|2020/10/26 11:00| ```トランザクション tr.souti_id, tr.kinou1_val, tm.kinou1_lim_max, tm.kinou1_lim_min, kinou2_val, tm.kinou2_lim_max, tm.kinou2_lim_min, tr.measu_date A01,65,100,10,28,50,0,2020/10/26 10:00 A01,80,100,10,26,50,0,2020/10/26 11:00 B01,55,80,20,28,60,5,2020/10/26 10:00 B01,60,80,20,26,60,5,2020/10/26 11:00

試したこと

結合を試みたのですが、レコードが2つ出力されるなど、うまくいきません。

わかりづらく申し訳ありませんが、どなたかヒントだけでもご教示いただけると幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/10/26 12:24

「出力結果」ってのは「期待する結果」という意味?
kabochacha

2020/10/27 00:34

そうです!すみません、「出力結果」というのは、自分が出力した結果ではなく、こう出力させたい!という内容です。
gentaro

2020/10/27 06:48

なるほど。 ところで、既に回答ついてるので私は回答しなくて良いかなと思ってますが、現在の回答には満足されていないんですか? 何らかのリアクションをされないと問題点がわかりませんが。
kabochacha

2020/10/27 11:17

リアクションが遅れてしまい申し訳ございません。 実装の確認をしておりました。下記の回答で実装できました。 SQLについてしっかり学んでいこうと思います。 ご指摘ありがとうございました!
guest

回答1

0

ベストアンサー

マスターを機能コードで分けて結合する。

SQL

1select tr.souti_id 2 , kinou1_val, tm1.souti_max_limit, tm1.souti_min_limit 3 , kinou2_val, tm2.souti_max_limit, tm2.souti_min_limit 4 , measu_date 5from tr 6 left join tm tm1 7 on tr.souti_id=tm1.souti_id 8 and tm1.souti_cd='kinou1' 9 left join tm tm2 10 on tr.souti_id=tm2.souti_id 11 and tm2.souti_cd='kinou2'

投稿2020/10/26 12:55

編集2020/10/26 23:43
sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kabochacha

2020/10/27 11:15

実装の確認するのが遅れてしまい申し訳ありません。 上記のコードでできました! 結合についてもっと勉強します。 回答の早さに驚きました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問