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

回答編集履歴

2

追記

2020/10/28 12:48

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  態々正規化されているテーブルを壊しているから、余計なunionが必要になるんです。
4
4
  先ずは、そこから正しましょう。
5
+ カテゴリコードを商品テーブルに追加すれば、テーブルを分ける必要がなくなります。
5
6
 
6
7
  質問のSQLではwhere 条件はcategory3に対してのみです。
7
8
  一つ一つに条件を付けるか、以下の様に一旦括ったものに対しての条件にします。

1

追記

2020/10/28 12:48

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,17 @@
1
1
  > テキストではデータベースの商品テーブルがひとつだけですが、アレンジして商品のカテゴリごとに複数のテーブルを作り、UNION ALLで結合してみた
2
2
 
3
3
  態々正規化されているテーブルを壊しているから、余計なunionが必要になるんです。
4
- 先ずは、そこから正しましょう。
4
+ 先ずは、そこから正しましょう。
5
+
6
+ 質問のSQLではwhere 条件はcategory3に対してのみです。
7
+ 一つ一つに条件を付けるか、以下の様に一旦括ったものに対しての条件にします。
8
+ ```SQL
9
+ select * from (
10
+ SELECT code,name,price FROM category1
11
+ UNION ALL
12
+ SELECT code,name,price FROM category2
13
+ UNION ALL
14
+ SELECT code,name,price FROM category3
15
+ ) mrg
16
+ WHERE code=?
17
+ ```