回答編集履歴

6

追記

2018/08/19 23:35

投稿

sazi
sazi

スコア25199

test CHANGED
@@ -16,9 +16,23 @@
16
16
 
17
17
  ```
18
18
 
19
+ サブクエリーだと
20
+
21
+ ```SQL
22
+
23
+ select a.EmpID
24
+
25
+ , (select meta_value from wp_usermeta where EmpID=a.EmpID and meta_key='FullName')as FullName
26
+
27
+ , (select meta_value from wp_usermeta where EmpID=a.EmpID and meta_key='Age')as Age
28
+
29
+ from (select EmpID from wp_usermeta group by EmpID) a
30
+
31
+ ```
32
+
19
33
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
20
34
 
21
- 軸(`EmpID`)さえあれば、サブエリーなどで取り出すテーブルに見えますけど。
35
+ 軸(`EmpID`)はトランザションに求めているテーブルに見えますけど。
22
36
 
23
37
 
24
38
 

5

訂正

2018/08/19 23:35

投稿

sazi
sazi

スコア25199

test CHANGED
@@ -1,22 +1,18 @@
1
- 全外部結合(Full join )じゃないかな?
1
+ ~~全外部結合(Full join )じゃないかな?~~
2
+
3
+ MySQLはFull join 使えませんでしたすみません。
4
+
5
+ なので、Full join が使えない場合は以下のようになります。
2
6
 
3
7
  ```SQL
4
8
 
5
- select coalesce(a.`EmpID`, b`EmpID`)
9
+ select a.EmpID, b.meta_value as FullName, c.meta_value as Age
6
10
 
7
- ,a."FullName", b."Age"
11
+ from (select EmpID from wp_usermeta group by EmpID) a
8
12
 
9
- from (
13
+ left join wp_usermeta b on a.EmpID=b.EmpID and b.meta_key='FullName'
10
14
 
11
- SELECT `EmpID`,meta_value as "FullName" FROM `wp_usermeta` where `meta_key`="FullName"
12
-
13
- ) as a full join (
14
-
15
- SELECT `EmpID`,meta_value as "Age" FROM `wp_usermeta` where `meta_key` = "Age"
15
+ left join wp_usermeta c on a.EmpID=c.EmpID and c.meta_key = 'Age'
16
-
17
- ) as b
18
-
19
- on a.`EmpID`=b.`EmpID`
20
16
 
21
17
  ```
22
18
 

4

推敲

2018/08/19 23:13

投稿

sazi
sazi

スコア25199

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
24
24
 
25
- 軸(`EmpID`)さえあれば、サブクエリーで取り出すテーブルに見えますけど。
25
+ 軸(`EmpID`)さえあれば、サブクエリーなどで取り出すテーブルに見えますけど。
26
26
 
27
27
 
28
28
 

3

追記

2018/08/19 12:23

投稿

sazi
sazi

スコア25199

test CHANGED
@@ -23,3 +23,25 @@
23
23
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
24
24
 
25
25
  軸(`EmpID`)さえあれば、サブクエリーで取り出すテーブルに見えますけど。
26
+
27
+
28
+
29
+ 推測だけど、EmpIDを持ったトランザクションをtrnテーブルとしたとすると、
30
+
31
+ ```SQL
32
+
33
+ select trn.EmpID, m_name.meta_value as FullName, m_age.meta_value as Age
34
+
35
+ from trn
36
+
37
+ left join wp_usermeta as m_name
38
+
39
+ on trn.EmpID=m_name.EmpID and m_name.meta_key='FullName'
40
+
41
+ left join wp_usermeta as m_age
42
+
43
+ on trn.EmpID=m_age.EmpID and m_age.meta_key='Age'
44
+
45
+ ```
46
+
47
+ じゃないかな。

2

元に戻した

2018/08/19 12:22

投稿

sazi
sazi

スコア25199

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  select coalesce(a.`EmpID`, b`EmpID`)
6
6
 
7
- ,a.meta_value as FullName, b.meta_value as Age
7
+ ,a."FullName", b."Age"
8
8
 
9
9
  from (
10
10
 

1

修正

2018/08/19 12:12

投稿

sazi
sazi

スコア25199

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  select coalesce(a.`EmpID`, b`EmpID`)
6
6
 
7
- ,a."FullName", b."Age"
7
+ ,a.meta_value as FullName, b.meta_value as Age
8
8
 
9
9
  from (
10
10