回答編集履歴

3

推敲

2020/06/24 02:47

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- 質問にある、「tag_id='大阪'」を含むデータの抽出は以下です。
37
+ 質問にある、「tag='大阪'」を含むデータの抽出は以下です。
38
38
 
39
39
  ```SQL
40
40
 

2

推敲

2020/06/24 02:47

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  ON t.tag_id = at.tag_id
52
52
 
53
- WHERE at.a_id in (select a_id from a_tag where tag_id = '大阪')
53
+ WHERE at.a_id in (select a_id from a_tag where tag = '大阪')
54
54
 
55
55
  GROUP BY at.a_id
56
56
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  ON t.tag_id = at.tag_id
74
74
 
75
- WHERE exists (select 1 from a_tag where tag_id = '大阪' and a_id = at.a_id)
75
+ WHERE exists (select 1 from a_tag where tag = '大阪' and a_id = at.a_id)
76
76
 
77
77
  GROUP BY at.a_id
78
78
 

1

追記

2020/06/24 02:47

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -31,3 +31,49 @@
31
31
  ```
32
32
 
33
33
  ただ、データ上GROUP_CONCAT()でDistinctが必要な状況ならDistinctが不要になるようにしておいた方が良いと思われます。
34
+
35
+
36
+
37
+ 質問にある、「tag_id='大阪'」を含むデータの抽出は以下です。
38
+
39
+ ```SQL
40
+
41
+ SELECT at.a_id
42
+
43
+ , GROUP_CONCAT(DISTINCT t.tag_id)
44
+
45
+ , GROUP_CONCAT(DISTINCT t.tag)
46
+
47
+ FROM a_tag at
48
+
49
+ inner join tag t
50
+
51
+ ON t.tag_id = at.tag_id
52
+
53
+ WHERE at.a_id in (select a_id from a_tag where tag_id = '大阪')
54
+
55
+ GROUP BY at.a_id
56
+
57
+ ```
58
+
59
+ または
60
+
61
+ ```SQL
62
+
63
+ SELECT at.a_id
64
+
65
+ , GROUP_CONCAT(DISTINCT t.tag_id)
66
+
67
+ , GROUP_CONCAT(DISTINCT t.tag)
68
+
69
+ FROM a_tag at
70
+
71
+ inner join tag t
72
+
73
+ ON t.tag_id = at.tag_id
74
+
75
+ WHERE exists (select 1 from a_tag where tag_id = '大阪' and a_id = at.a_id)
76
+
77
+ GROUP BY at.a_id
78
+
79
+ ```