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

回答編集履歴

2

教科名周りがおかしかったので修正

2015/05/14 07:39

投稿

kutsulog
kutsulog

スコア985

answer CHANGED
@@ -17,12 +17,17 @@
17
17
 
18
18
  かくならこんな感じで社会用と英語用でt_scoreを2回結合する必要があります
19
19
  ```lang-SQL
20
- SELECT *
20
+ SELECT
21
+ sei.name
22
+ , so_nam.ky_names
23
+ , so.score
24
+ , en_nam.ky_names
25
+ , en.score
21
- FROM t_seito sei, t_score so, t_score en, m_kyouka kyo
26
+ FROM t_seito sei, t_score so, t_score en, m_kyouka so_nam, m_kyouka en_name
22
27
  WHERE sei.id = so.seito_id
23
28
  AND sei.id = en.seito_id
24
- AND so.sckyouka_id = kyo.kyouka_id
29
+ AND so.sckyouka_id = so_nam.kyouka_id
25
- AND en.sckyouka_id = en.kyouka_id
30
+ AND en.sckyouka_id = en_nam.kyouka_id
26
31
  -- 社会で絞り込み
27
32
  AND so.kyouka_id = 4
28
33
  AND so.score >= 50

1

誤字修正&説明に+α

2015/05/14 07:39

投稿

kutsulog
kutsulog

スコア985

answer CHANGED
@@ -3,6 +3,7 @@
3
3
  > and kyouka_id=5
4
4
  > and score <=50
5
5
  この条件をはずすと下みたいにただデータが横に並んだデータが出てくるはずです
6
+
6
7
  id name comment created_at kyouka_id ky_names c_id seito_id sckyouka_id score
7
8
  11 赤井 あかい 0000-00-00 00:00:00 1 国語 1 11 1 50
8
9
  22 青葉 あおば 0000-00-00 00:00:00 1 国語 2 22 1 80
@@ -11,7 +12,7 @@
11
12
 
12
13
 
13
14
  提示されたSQLですとこのデータの中から
14
- 教科は社会かつ英語で点数が50点以下かつ50点以上の条件をすべて満たすデータを探そうとします
15
+ 教科は社会かつ英語で点数が50点以下かつ50点以上の条件を横1列のデータですべて満たすデータを探します
15
16
  なので見つかるはずはありません
16
17
 
17
18
  かくならこんな感じで社会用と英語用でt_scoreを2回結合する必要があります
@@ -32,6 +33,6 @@
32
33
  ```
33
34
 
34
35
  ついでですがFROM句でテーブルに別名を書いて
35
- WHERE句やSELECT句では、どのテーブルのカラムを意識して書くようにしましょう
36
+ WHERE句やSELECT句では、どのテーブルのカラムを意識して書くようにしましょう
36
37
  でないと今回のようにSQLを書くときかぶらないように
37
38
  カラム名を何テーブルのidとかにしなければならなくなります