回答編集履歴

1

追記内容をもとに、回答を修正した。

2021/07/07 10:26

投稿

neko_the_shadow
neko_the_shadow

スコア2349

test CHANGED
@@ -15,3 +15,61 @@
15
15
  HAVING COUNT(*) = (SELECT COUNT(*) FROM 本 WHERE 会社名 = 'BBB')
16
16
 
17
17
  ```
18
+
19
+
20
+
21
+ ---
22
+
23
+
24
+
25
+ **2021/07/07 19:23追記**
26
+
27
+
28
+
29
+ JOINを利用しない方法だと、例えば以下のようになります。
30
+
31
+
32
+
33
+ ```SQL
34
+
35
+ SELECT 会社名
36
+
37
+ FROM 本 H1
38
+
39
+ WHERE EXISTS (
40
+
41
+ SELECT *
42
+
43
+ FROM 本 H2
44
+
45
+ WHERE H2.会社名= 'BBB'
46
+
47
+ AND H1.ジャンル = H2.ジャンル
48
+
49
+ )
50
+
51
+ GROUP BY 会社名
52
+
53
+ HAVING COUNT(*) = (SELECT COUNT(*) FROM 本 WHERE 会社名 = 'BBB');
54
+
55
+ ```
56
+
57
+
58
+
59
+ ところで、タグにはMySQLとありますが、実際にはMS Accessを利用されているということはないでしょうか? であれば先に示したJOINを利用したクエリは以下のようにする必要があります。
60
+
61
+
62
+
63
+ ```SQL
64
+
65
+ SELECT H1.会社名
66
+
67
+ FROM 本 H1
68
+
69
+ INNER JOIN 本 H2 ON (H2.会社名 = 'BBB' AND H1.ジャンル = H2.ジャンル)
70
+
71
+ GROUP BY H1.会社名
72
+
73
+ HAVING COUNT(*) = (SELECT COUNT(*) FROM 本 WHERE 会社名 = 'BBB')
74
+
75
+ ```