質問編集履歴

4

結論の追記

2016/07/01 08:50

投稿

takushi168
takushi168

スコア228

test CHANGED
File without changes
test CHANGED
@@ -111,3 +111,45 @@
111
111
  これを改良するか、もしくは全く別の形でも構わないのですが、
112
112
 
113
113
  正しい書き方はありますでしょうか?
114
+
115
+
116
+
117
+
118
+
119
+ ---
120
+
121
+ <追記>
122
+
123
+ ご回答いただいた内容を参考にさせていただき、以下の形に落ち着きそうです。
124
+
125
+ (ちょっと長ったらしいですが、実装上の諸々の都合があり…。)
126
+
127
+
128
+
129
+ ```sql
130
+
131
+ SELECT `data_table`.`foo`, `data_table`.`bar`, `data_table`.`buz`
132
+
133
+ FROM `data_table`
134
+
135
+ INNER JOIN
136
+
137
+ (
138
+
139
+ -- ここの「MAX」をアプリ側で「MIN」に書き変える場合アリ
140
+
141
+ SELECT `foo`, MAX(`bar`) AS `bar`
142
+
143
+ FROM `data_table`
144
+
145
+ WHERE `bar` IN (1,2)
146
+
147
+ GROUP BY `foo`
148
+
149
+ ) AS `dt_sub`
150
+
151
+ ON `data_table`.`foo` = `dt_sub`.`foo`
152
+
153
+ AND `data_table`.`bar` = `dt_sub`.`bar`
154
+
155
+ ```

3

誤字修正・少し追記

2016/07/01 08:50

投稿

takushi168
takushi168

スコア228

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  以下のようにデータが入っているとします。
24
24
 
25
- `baz` その他のデータも入っています。
25
+ `buz` その他のデータも入っています。
26
26
 
27
27
  PKは `foo` と `bar` の複合です。
28
28
 
@@ -30,7 +30,7 @@
30
30
 
31
31
  ------
32
32
 
33
- foo bar baz
33
+ foo bar buz
34
34
 
35
35
  ------
36
36
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  (また、ここでは1と2のうち2を優先して取る例としていますが、1と3のうち1を優先して取る、等の可能性もあります。
60
60
 
61
- そのあたりはアプリケーション側で制御します。)
61
+ そのあたりはアプリケーション側で制御します。クエリの書き換えもある程度可能です。
62
62
 
63
63
 
64
64
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  ------
68
68
 
69
- foo bar baz
69
+ foo bar buz
70
70
 
71
71
  ------
72
72
 
@@ -90,13 +90,13 @@
90
90
 
91
91
  SELECT
92
92
 
93
- `dt`.`foo`, `dt`.`bar`, `dt`.`baz`
93
+ `dt`.`foo`, `dt`.`bar`, `dt`.`buz`
94
94
 
95
95
  FROM
96
96
 
97
97
  (
98
98
 
99
- SELECT `foo`, `bar`, `baz`
99
+ SELECT `foo`, `bar`, `buz`
100
100
 
101
101
  FROM `data_table`
102
102
 

2

全体的に加筆しました

2016/07/01 07:06

投稿

takushi168
takushi168

スコア228

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,12 @@
1
1
  …と言葉で書くととても分かりにくいのですが。
2
2
 
3
3
 
4
+
5
+
6
+
7
+ <追記>
8
+
9
+ 全体的に加筆修正しました。
4
10
 
5
11
 
6
12
 
@@ -16,25 +22,29 @@
16
22
 
17
23
  以下のようにデータが入っているとします。
18
24
 
25
+ `baz` その他のデータも入っています。
26
+
27
+ PKは `foo` と `bar` の複合です。
19
28
 
20
29
 
21
- ----
22
30
 
23
- foo bar
31
+ ------
24
32
 
25
- ----
33
+ foo bar baz
26
34
 
27
- A 1
35
+ ------
28
36
 
29
- B 1
37
+ A 1 aaa
30
38
 
31
- B 2
39
+ B 1 bbb
32
40
 
33
- C 1
41
+ B 2 ccc
34
42
 
35
- C 2
43
+ C 1 ddd
36
44
 
45
+ C 2 eee
46
+
37
- ----
47
+ ------
38
48
 
39
49
 
40
50
 
@@ -46,37 +56,27 @@
46
56
 
47
57
  を取得したいのです。
48
58
 
59
+ (また、ここでは1と2のうち2を優先して取る例としていますが、1と3のうち1を優先して取る、等の可能性もあります。
60
+
61
+ そのあたりはアプリケーション側で制御します。)
62
+
49
63
 
50
64
 
51
65
  このような状態ですね。
52
66
 
53
- ----
67
+ ------
54
68
 
55
- foo bar
69
+ foo bar baz
56
70
 
57
- ----
71
+ ------
58
72
 
59
- A 1
73
+ A 1 aaa
60
74
 
61
- B 2
75
+ B 2 ccc
62
76
 
63
- C 2
77
+ C 2 eee
64
78
 
65
- ----
79
+ ------
66
-
67
-
68
-
69
- <追記>
70
-
71
- すみません、情報不足でした。
72
-
73
- foo,bar以外にもカラムが存在する場合があるため、
74
-
75
- あくまでレコード全体を取得したいです。
76
-
77
- </追記>
78
-
79
-
80
80
 
81
81
 
82
82
 
@@ -90,13 +90,13 @@
90
90
 
91
91
  SELECT
92
92
 
93
- `dt`.`foo`, `dt`.`bar`
93
+ `dt`.`foo`, `dt`.`bar`, `dt`.`baz`
94
94
 
95
95
  FROM
96
96
 
97
97
  (
98
98
 
99
- SELECT `foo`, `bar`
99
+ SELECT `foo`, `bar`, `baz`
100
100
 
101
101
  FROM `data_table`
102
102
 

1

補足情報の追加

2016/07/01 06:22

投稿

takushi168
takushi168

スコア228

test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,18 @@
66
66
 
67
67
 
68
68
 
69
+ <追記>
70
+
71
+ すみません、情報不足でした。
72
+
73
+ foo,bar以外にもカラムが存在する場合があるため、
74
+
75
+ あくまでレコード全体を取得したいです。
76
+
77
+ </追記>
78
+
79
+
80
+
69
81
 
70
82
 
71
83
  現在のところ、