teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

ソースコメント追加

2017/01/25 12:46

投稿

Panzer_vor
Panzer_vor

スコア1636

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

2

一部コメント修正

2017/01/25 12:46

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -22,7 +22,7 @@
22
22
  -- ON rank.mstcode = knme.mstcode
23
23
  ON rank.kousin_func = knme.mstcode
24
24
  LEFT JOIN codetb
25
- /* 指摘2:下記も結合として本当に妥当?? */
25
+ /* 指摘2:下記も結合条件として本当に妥当?? */
26
26
  ON rank.kaiin_rank = codetb.code
27
27
  WHERE
28
28
  /* 指摘3:rankテーブルにカラム名が「NO」のものが見当たりません(定義を全部掲載してないだけ??) */

1

追記

2017/01/25 12:44

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -1,4 +1,43 @@
1
1
  何がどううまくいかないのかがちと分かりませんが、
2
2
 
3
3
  少なくとも**13行目**、2つ目のLEFT JOIN句下の指定しているテーブル名は間違ってるのではないでしょうか。
4
- code → codetbでは?
4
+ code → codetbでは?
5
+
6
+ #以下追記
7
+ PCからSQLを確認してみると、上記のミス以前にクエリがめちゃくちゃですね・・・
8
+ 以下にとりあえず動作はするクエリは記載しますが、
9
+ 同時にいくつか指摘させていただきますので合わせて確認して下さい。
10
+
11
+ ```SQL
12
+ SELECT
13
+ rank.touroku_ymd AS touroko_ymd
14
+ , rank.riyou_amt AS riyou_amt
15
+ , rank.kousin_func AS kousin_func
16
+ , codetb.code_nm AS code_nm
17
+ , knme.menu_name AS menu_name
18
+ FROM
19
+ rank
20
+ LEFT JOIN knme
21
+ /* 指摘1:rankテーブルにmstcodeはないためNG、そもそも結合できるテーブル同士?? */
22
+ -- ON rank.mstcode = knme.mstcode
23
+ ON rank.kousin_func = knme.mstcode
24
+ LEFT JOIN codetb
25
+ /* 指摘2:下記も結合として本当に妥当?? */
26
+ ON rank.kaiin_rank = codetb.code
27
+ WHERE
28
+ /* 指摘3:rankテーブルにカラム名が「NO」のものが見当たりません(定義を全部掲載してないだけ??) */
29
+ -- rank."NO" = 1923
30
+
31
+ /* 指摘4:下記のように抽出条件を付けるとLEFT JOINの意味がありません */
32
+ codetb.type = 293
33
+ ```
34
+
35
+ ---
36
+ そもそも上記3つのテーブルってそれぞれ関連しあっているのでしょうか?
37
+ 関連し合っているなら先ずは結合条件として適切なものを選択して下さい。
38
+
39
+ 関連し合ってないなら、くっつけようがないです。
40
+ あえてくっつけるなら**直積(CROSS JOIN)**を使えばくっつけられますが、
41
+ 恐らく意味はないし、やりたいこととも異なるでしょう。
42
+
43
+ 先ずは**やりたいこと・要件の再整理**からスタートですね。