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

回答編集履歴

6

追記

2018/08/19 23:35

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -7,8 +7,15 @@
7
7
  left join wp_usermeta b on a.EmpID=b.EmpID and b.meta_key='FullName'
8
8
  left join wp_usermeta c on a.EmpID=c.EmpID and c.meta_key = 'Age'
9
9
  ```
10
+ サブクエリーだと
11
+ ```SQL
12
+ select a.EmpID
13
+ , (select meta_value from wp_usermeta where EmpID=a.EmpID and meta_key='FullName')as FullName
14
+ , (select meta_value from wp_usermeta where EmpID=a.EmpID and meta_key='Age')as Age
15
+ from (select EmpID from wp_usermeta group by EmpID) a
16
+ ```
10
17
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
11
- 軸(`EmpID`)さえあれば、サブエリーなどで取り出すテーブルに見えますけど。
18
+ 軸(`EmpID`)はトランザションに求めているテーブルに見えますけど。
12
19
 
13
20
  推測だけど、EmpIDを持ったトランザクションをtrnテーブルとしたとすると、
14
21
  ```SQL

5

訂正

2018/08/19 23:35

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,13 +1,11 @@
1
- 全外部結合(Full join )じゃないかな?
1
+ ~~全外部結合(Full join )じゃないかな?~~
2
+ MySQLはFull join 使えませんでしたすみません。
3
+ なので、Full join が使えない場合は以下のようになります。
2
4
  ```SQL
5
+ select a.EmpID, b.meta_value as FullName, c.meta_value as Age
3
- select coalesce(a.`EmpID`, b`EmpID`)
6
+ from (select EmpID from wp_usermeta group by EmpID) a
4
- ,a."FullName", b."Age"
5
- from (
6
- SELECT `EmpID`,meta_value as "FullName" FROM `wp_usermeta` where `meta_key`="FullName"
7
+ left join wp_usermeta b on a.EmpID=b.EmpID and b.meta_key='FullName'
7
- ) as a full join (
8
- SELECT `EmpID`,meta_value as "Age" FROM `wp_usermeta` where `meta_key` = "Age"
8
+ left join wp_usermeta c on a.EmpID=c.EmpID and c.meta_key = 'Age'
9
- ) as b
10
- on a.`EmpID`=b.`EmpID`
11
9
  ```
12
10
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
13
11
  軸(`EmpID`)さえあれば、サブクエリーなどで取り出すテーブルに見えますけど。

4

推敲

2018/08/19 23:13

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  on a.`EmpID`=b.`EmpID`
11
11
  ```
12
12
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
13
- 軸(`EmpID`)さえあれば、サブクエリーで取り出すテーブルに見えますけど。
13
+ 軸(`EmpID`)さえあれば、サブクエリーなどで取り出すテーブルに見えますけど。
14
14
 
15
15
  推測だけど、EmpIDを持ったトランザクションをtrnテーブルとしたとすると、
16
16
  ```SQL

3

追記

2018/08/19 12:23

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -10,4 +10,15 @@
10
10
  on a.`EmpID`=b.`EmpID`
11
11
  ```
12
12
  だけど、そんな構成になっているなら、設計者に聞くともっと効率の良い取り出し方が用意されているような気がします。
13
- 軸(`EmpID`)さえあれば、サブクエリーで取り出すテーブルに見えますけど。
13
+ 軸(`EmpID`)さえあれば、サブクエリーで取り出すテーブルに見えますけど。
14
+
15
+ 推測だけど、EmpIDを持ったトランザクションをtrnテーブルとしたとすると、
16
+ ```SQL
17
+ select trn.EmpID, m_name.meta_value as FullName, m_age.meta_value as Age
18
+ from trn
19
+ left join wp_usermeta as m_name
20
+ on trn.EmpID=m_name.EmpID and m_name.meta_key='FullName'
21
+ left join wp_usermeta as m_age
22
+ on trn.EmpID=m_age.EmpID and m_age.meta_key='Age'
23
+ ```
24
+ じゃないかな。

2

元に戻した

2018/08/19 12:22

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  全外部結合(Full join )じゃないかな?
2
2
  ```SQL
3
3
  select coalesce(a.`EmpID`, b`EmpID`)
4
- ,a.meta_value as FullName, b.meta_value as Age
4
+ ,a."FullName", b."Age"
5
5
  from (
6
6
  SELECT `EmpID`,meta_value as "FullName" FROM `wp_usermeta` where `meta_key`="FullName"
7
7
  ) as a full join (

1

修正

2018/08/19 12:12

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  全外部結合(Full join )じゃないかな?
2
2
  ```SQL
3
3
  select coalesce(a.`EmpID`, b`EmpID`)
4
- ,a."FullName", b."Age"
4
+ ,a.meta_value as FullName, b.meta_value as Age
5
5
  from (
6
6
  SELECT `EmpID`,meta_value as "FullName" FROM `wp_usermeta` where `meta_key`="FullName"
7
7
  ) as a full join (