質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

1回答

1629閲覧

postgreSQL 3つのjoinしたSQL書く

amaguri

総合スコア227

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/01/25 11:52

テーブル rankテーブル touroko_ymd riyou_amt kousin_func kaiin_rank codetbテーブル code_nm code type knmeテーブル menu_name mstcode

この3つのテーブルをjoinさせたのですが

既存のコード

select rank.touroku_ymd as touroko_ymd rank.riyou_amt as riyou_amt rank.kousin_func as kousin_func codetb.code_nm as code_nm knme.menu_name as menu_name from rank left join knme on rank.mstcode = knme.mstcode left join code on rank.kaiin_rank = codetb.code where rank.no =1923 and codetb.type=293

テーブル利用して
テーブル別にjoinするコードに直しなさいと言われたのですが全くできずに困っています。
テーブル利用したのですがうまくいかず

2時間ほどいろいろ試してますがうまくいかず
3つのテーブルをきれいにjoinするためにはどうすればよろしいでしょうか?、、

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

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

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

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

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

guest

回答1

0

何がどううまくいかないのかがちと分かりませんが、

少なくとも13行目、2つ目のLEFT JOIN句下の指定しているテーブル名は間違ってるのではないでしょうか。
code → codetbでは?

#以下追記
PCからSQLを確認してみると、上記のミス以前にクエリがめちゃくちゃですね・・・
以下にとりあえず動作はするクエリは記載しますが、
同時にいくつか指摘させていただきますので合わせて確認して下さい。

SQL

1SELECT 2/* 指摘1:大前提としてSELECT句でカラムをリストする時はカンマ区切りが必要です */ 3 rank.touroku_ymd AS touroko_ymd 4, rank.riyou_amt AS riyou_amt 5, rank.kousin_func AS kousin_func 6, codetb.code_nm AS code_nm 7, knme.menu_name AS menu_name 8FROM 9 rank 10 LEFT JOIN knme 11 /* 指摘2:rankテーブルにmstcodeはないためNG、そもそも結合できるテーブル同士?? */ 12-- ON rank.mstcode = knme.mstcode 13 ON rank.kousin_func = knme.mstcode 14 LEFT JOIN codetb 15 /* 指摘3:下記も結合条件として本当に妥当?? */ 16 ON rank.kaiin_rank = codetb.code 17WHERE 18 /* 指摘4:rankテーブルにカラム名が「NO」のものが見当たりません(定義を全部掲載してないだけ??) */ 19-- rank."NO" = 1923 20 21 /* 指摘5:下記のように抽出条件を付けるとLEFT JOINの意味がありません */ 22 codetb.type = 293

そもそも上記3つのテーブルってそれぞれ関連しあっているのでしょうか?
関連し合っているなら先ずは結合条件として適切なものを選択して下さい。

関連し合ってないなら、くっつけようがないです。
あえてくっつけるなら**直積(CROSS JOIN)**を使えばくっつけられますが、
恐らく意味はないし、やりたいこととも異なるでしょう。

先ずはやりたいこと・要件の再整理からスタートですね。

投稿2017/01/25 12:01

編集2017/01/25 12:46
Panzer_vor

総合スコア1636

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

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

amaguri

2017/01/26 00:27

なんとか作ることができました! 一度整理して考えたらできました!
Panzer_vor

2017/01/26 02:01

> amaguriさん 問題が解決して何よりです。 煮詰まったときは一度距離を置いて、 冷静に振り返ってみることも大事ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問