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

質問編集履歴

12

a

2020/02/16 07:56

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,65 +1,1 @@
1
- ### 2つのSQLの結果を結合して、viewで表示したいです。
1
+ ### 2つのSQLの結果を結合して、viewで表示したいです。
2
-
3
- ・companies(id, master_member_id, name, address)
4
- ・members(id, company_id, name, email)
5
- ・member_details(member_id, version)
6
- ![イメージ説明](a033d5b6d90c5a3b3804332616e30503.png)
7
-
8
- 現在上記のような,3つのテーブルがあり,companiesとmembers(①とします)、membersとmember_details(②とします)をそれぞれアウタージョインして2つのSQLを発行しています。
9
-
10
- この二つのsqlの結果を結合してveiwでcompaniesに紐ずいているmember_detailsテーブルのversionカラムのデータを表示し、さらにcompanyごとに何人versionに値が入っているのかcountで数を表示したいです。(テーブルはcompaniesとmembersが多対一、membersとmember_detailsが一対一です。)
11
-
12
- 3つのテーブルをjoinなどして連結させるとversionに対してcount関数が使えないので、あえてjoinは使わずに実装しようとしています。
13
-
14
- ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータをconcatで結合させようとしているのですが、どのように結合させればよいか検討がつきません。
15
-
16
- ```
17
- @companies = Company.all.joins('LEFT OUTER JOIN members ON companies.master_member_id = members.id')
18
- .select('companies.*, members.id as member_id, members.company_id as com_id').to_a
19
-
20
- @members = Member.all.joins('LEFT OUTER JOIN member_details ON members.id = member_details.member_id')
21
- .select('members.id as member_id, members.company_id as member_com_id, member_details.member_id as member_detail_id, member_details.version as ver').to_a
22
- ```
23
-
24
- ```想定している結果
25
-
26
- 各companyに対して紐ずいているmemberのversionカラムに値が入っている個数を表示すること。
27
- 下の例だと2(comany.id = 1のmemberでversionに値があるのは1,3の二人なので)
28
-
29
- テーブル定義
30
-
31
- CREATE TABLE companies(
32
- id INT(11) AUTO_INCREMENT NOT NULL,
33
- master_member_id INT(11),
34
- name VARCHAR(30) NOT NULL ,
35
- address VARCHAR(30) NOT NULL,
36
- PRIMARY KEY (id));
37
-
38
- CREATE TABLE members(
39
- id INT(11) AUTO_INCREMENT NOT NULL,
40
- company_id INT(11) NOT NULL ,
41
- name VARCHAR(30) NOT NULL,
42
- email VARCHAR(30) NOT NULL
43
- PRIMARY KEY (id));
44
-
45
- CREATE TABLE member_details(
46
- member_id INT(11) AUTO_INCREMENT NOT NULL,
47
- version INT(11) NOT NULL ,
48
- PRIMARY KEY (id));
49
-
50
- テーブルに存在するデータ
51
- insert into companies (id, master_member_id, name, address) values (1, 1,'google', tokyo);
52
-
53
- insert into members (id, company_id, name, email) values (1, 1, 'yuki', test@test.com);
54
- insert into members (id, company_id, name, email) values (2, 1, 'aki', test2@test.com);
55
- insert into members (id, company_id, name, email) values (3, 1, 'koko', test3@test.com);
56
-
57
- insert into member_details (member_id, version) values (1, 3.5);
58
- insert into member_details (member_id, version) values (2, nil);
59
- insert into member_details (member_id, version) values (3, 3.5);
60
- ```
61
- データベース:mysql
62
- バージョン: 5.7.27
63
-
64
-
65
- 何かアドバイスをいただければ幸いです。

11

f

2020/02/16 07:56

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  ・companies(id, master_member_id, name, address)
4
4
  ・members(id, company_id, name, email)
5
5
  ・member_details(member_id, version)
6
- ![イメージ説明](67cb9e197004171c89bf6d1696dac2c4.png)
6
+ ![イメージ説明](a033d5b6d90c5a3b3804332616e30503.png)
7
7
 
8
8
  現在上記のような,3つのテーブルがあり,companiesとmembers(①とします)、membersとmember_details(②とします)をそれぞれアウタージョインして2つのSQLを発行しています。
9
9
 

10

s

2020/02/13 12:45

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  ・companies(id, master_member_id, name, address)
4
4
  ・members(id, company_id, name, email)
5
5
  ・member_details(member_id, version)
6
- ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)
6
+ ![イメージ説明](67cb9e197004171c89bf6d1696dac2c4.png)
7
7
 
8
8
  現在上記のような,3つのテーブルがあり,companiesとmembers(①とします)、membersとmember_details(②とします)をそれぞれアウタージョインして2つのSQLを発行しています。
9
9
 

9

a

2020/02/13 12:44

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 2つのSQLの結果を結合して、viewで表示したいです。
2
2
 
3
- ・companies(id, name, address)
3
+ ・companies(id, master_member_id, name, address)
4
4
  ・members(id, company_id, name, email)
5
5
  ・member_details(member_id, version)
6
6
  ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)
@@ -13,6 +13,14 @@
13
13
 
14
14
  ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータをconcatで結合させようとしているのですが、どのように結合させればよいか検討がつきません。
15
15
 
16
+ ```
17
+ @companies = Company.all.joins('LEFT OUTER JOIN members ON companies.master_member_id = members.id')
18
+ .select('companies.*, members.id as member_id, members.company_id as com_id').to_a
19
+
20
+ @members = Member.all.joins('LEFT OUTER JOIN member_details ON members.id = member_details.member_id')
21
+ .select('members.id as member_id, members.company_id as member_com_id, member_details.member_id as member_detail_id, member_details.version as ver').to_a
22
+ ```
23
+
16
24
  ```想定している結果
17
25
 
18
26
  各companyに対して紐ずいているmemberのversionカラムに値が入っている個数を表示すること。
@@ -22,6 +30,7 @@
22
30
 
23
31
  CREATE TABLE companies(
24
32
  id INT(11) AUTO_INCREMENT NOT NULL,
33
+ master_member_id INT(11),
25
34
  name VARCHAR(30) NOT NULL ,
26
35
  address VARCHAR(30) NOT NULL,
27
36
  PRIMARY KEY (id));
@@ -39,7 +48,7 @@
39
48
  PRIMARY KEY (id));
40
49
 
41
50
  テーブルに存在するデータ
42
- insert into companies (id, name, address) values (1, 'google', tokyo);
51
+ insert into companies (id, master_member_id, name, address) values (1, 1,'google', tokyo);
43
52
 
44
53
  insert into members (id, company_id, name, email) values (1, 1, 'yuki', test@test.com);
45
54
  insert into members (id, company_id, name, email) values (2, 1, 'aki', test2@test.com);

8

s

2020/02/13 12:41

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータをconcatで結合させようとしているのですが、どのように結合させればよいか検討がつきません。
15
15
 
16
- 想定している結果
16
+ ```想定している結果
17
17
 
18
18
  各companyに対して紐ずいているmemberのversionカラムに値が入っている個数を表示すること。
19
19
  下の例だと2(comany.id = 1のmemberでversionに値があるのは1,3の二人なので)
@@ -48,7 +48,7 @@
48
48
  insert into member_details (member_id, version) values (1, 3.5);
49
49
  insert into member_details (member_id, version) values (2, nil);
50
50
  insert into member_details (member_id, version) values (3, 3.5);
51
-
51
+ ```
52
52
  データベース:mysql
53
53
  バージョン: 5.7.27
54
54
 

7

u

2020/02/13 12:20

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,44 @@
13
13
 
14
14
  ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータをconcatで結合させようとしているのですが、どのように結合させればよいか検討がつきません。
15
15
 
16
+ 想定している結果
16
17
 
18
+ 各companyに対して紐ずいているmemberのversionカラムに値が入っている個数を表示すること。
19
+ 下の例だと2(comany.id = 1のmemberでversionに値があるのは1,3の二人なので)
17
20
 
21
+ テーブル定義
22
+
23
+ CREATE TABLE companies(
24
+ id INT(11) AUTO_INCREMENT NOT NULL,
25
+ name VARCHAR(30) NOT NULL ,
26
+ address VARCHAR(30) NOT NULL,
27
+ PRIMARY KEY (id));
28
+
29
+ CREATE TABLE members(
30
+ id INT(11) AUTO_INCREMENT NOT NULL,
31
+ company_id INT(11) NOT NULL ,
32
+ name VARCHAR(30) NOT NULL,
33
+ email VARCHAR(30) NOT NULL
34
+ PRIMARY KEY (id));
35
+
36
+ CREATE TABLE member_details(
37
+ member_id INT(11) AUTO_INCREMENT NOT NULL,
38
+ version INT(11) NOT NULL ,
39
+ PRIMARY KEY (id));
40
+
41
+ テーブルに存在するデータ
42
+ insert into companies (id, name, address) values (1, 'google', tokyo);
43
+
44
+ insert into members (id, company_id, name, email) values (1, 1, 'yuki', test@test.com);
45
+ insert into members (id, company_id, name, email) values (2, 1, 'aki', test2@test.com);
46
+ insert into members (id, company_id, name, email) values (3, 1, 'koko', test3@test.com);
47
+
48
+ insert into member_details (member_id, version) values (1, 3.5);
49
+ insert into member_details (member_id, version) values (2, nil);
50
+ insert into member_details (member_id, version) values (3, 3.5);
51
+
52
+ データベース:mysql
53
+ バージョン: 5.7.27
54
+
55
+
18
56
  何かアドバイスをいただければ幸いです。

6

2020/02/13 12:20

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
  3つのテーブルをjoinなどして連結させるとversionに対してcount関数が使えないので、あえてjoinは使わずに実装しようとしています。
13
13
 
14
- ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータを結合させようとしているのですが、どのように結合させればよいか検討がつきません。
14
+ ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータをconcatで結合させようとしているのですが、どのように結合させればよいか検討がつきません。
15
15
 
16
+
17
+
16
18
  何かアドバイスをいただければ幸いです。

5

gp

2020/02/13 11:58

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -7,8 +7,10 @@
7
7
 
8
8
  現在上記のような,3つのテーブルがあり,companiesとmembers(①とします)、membersとmember_details(②とします)をそれぞれアウタージョインして2つのSQLを発行しています。
9
9
 
10
- この二つのsqlの結果を結合してveiwでcompaniesに紐ずいているmember_detailsテーブルのversionカラムのデータを表示したいです。(テーブルはcompaniesとmembersが多対一、membersとmember_detailsが一対一です。)
10
+ この二つのsqlの結果を結合してveiwでcompaniesに紐ずいているmember_detailsテーブルのversionカラムのデータを表示し、さらにcompanyごとに何人versionに値が入っているのかcountで数を表示したいです。(テーブルはcompaniesとmembersが多対一、membersとmember_detailsが一対一です。)
11
11
 
12
+ 3つのテーブルをjoinなどして連結させるとversionに対してcount関数が使えないので、あえてjoinは使わずに実装しようとしています。
13
+
12
14
  ①で引っ張ってきたcompanyデータをmap関数でループさせて、そのデータの一個一個に②のデータを結合させようとしているのですが、どのように結合させればよいか検討がつきません。
13
15
 
14
16
  何かアドバイスをいただければ幸いです。

4

j

2020/02/13 11:54

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 2つのSQLの結果を結合して、viewで表示したいです。
2
2
 
3
- compnies(id, name, address)
3
+ companies(id, name, address)
4
4
  ・members(id, company_id, name, email)
5
5
  ・member_details(member_id, version)
6
6
  ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)

3

語彙

2020/02/13 11:44

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,8 @@
1
1
  ### 2つのSQLの結果を結合して、viewで表示したいです。
2
2
 
3
3
  ・compnies(id, name, address)
4
- ・members(id, company_name, name, email)
4
+ ・members(id, company_id, name, email)
5
- ・member_details(member_name, version)
5
+ ・member_details(member_id, version)
6
6
  ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)
7
7
 
8
8
  現在上記のような,3つのテーブルがあり,companiesとmembers(①とします)、membersとmember_details(②とします)をそれぞれアウタージョインして2つのSQLを発行しています。

2

2020/02/13 11:43

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,9 @@
1
- ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)### 2つのSQLの結果を結合して、viewで表示したいです。
1
+ ### 2つのSQLの結果を結合して、viewで表示したいです。
2
2
 
3
3
  ・compnies(id, name, address)
4
4
  ・members(id, company_name, name, email)
5
5
  ・member_details(member_name, version)
6
+ ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)
6
7
 
7
8
  現在上記のような,3つのテーブルがあり,companiesとmembers(①とします)、membersとmember_details(②とします)をそれぞれアウタージョインして2つのSQLを発行しています。
8
9
 

1

画像挿入

2020/02/13 11:06

投稿

yuki0123
yuki0123

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- ### 2つのSQLの結果を結合して、viewで表示したいです。
1
+ ![イメージ説明](92e6b729b2bc50a9291355c177908b39.png)### 2つのSQLの結果を結合して、viewで表示したいです。
2
2
 
3
3
  ・compnies(id, name, address)
4
4
  ・members(id, company_name, name, email)