mysql:4039
From: Minoru Fukuda <Minoru Fukuda <fukuda@xxxxxxxxxx>>
Date: Wed, 18 Jul 2001 18:17:28 +0900
Subject: [mysql 04039] VIEW, UNION の代替方法
こんにちは、MySQL 初心者の福田@キノルです。
これまで、PostgreSQL を使っていたのですが、実行スピードにものたりないので
MySQL を検討しています。ただ MySQL には VIEW や UNION の機能がないので
以下のような場合には、どうしたら良いか困っています。
お知恵を貸してください。
在庫管理用のデータベースなのですが、以下の2つの入出庫に関するテーブルと、
そのレコードがあるとします。
create table tableNyuuko (
nyuukoID integer auto_increment primary key,
kazu integer,
shouhinmei text
);
create table tableShukko (
shukkoID integer auto_increment primary key,
kazu integer,
shouhinmei text
);
mysql> select * from tableNyuuko;
+----------+------+------------+
| nyuukoID | kazu | shouhinmei |
+----------+------+------------+
| 1 | 10 | A |
| 2 | 20 | B |
| 3 | 30 | C |
+----------+------+------------+
3 rows in set (0.00 sec)
mysql> select * from tableShukko;
+----------+------+------------+
| shukkoID | kazu | shouhinmei |
+----------+------+------------+
| 1 | 3 | A |
| 2 | 4 | B |
+----------+------+------------+
2 rows in set (0.01 sec)
こういった場合 Postgre など、VIEW, UNION が使える DBMS では
CRREATE VIEW viewNyuuShukko AS
SELECT kazu AS nyuukoSuu, 0 AS shukkoSuu, shouhinmei
UNION ALL
SELECT 0 AS nyuukoSuu, kazu AS shukkoSuu, shouhinmei;
と言った具合で、いったん UNION を使った VIEW を作り、
SELECT SUM(nyuukoSuu), SUM(shukkoSuu), shouhinmei
FROM viewNyuuShukko
GROUP BY shouhinmei;
で、以下のような入出庫の表を得ることができていました。
+-----------+-----------+------------+
| nyuukoSuu | shukkoSuu | shouhinmei |
+-----------+-----------+------------+
| 10 | 3 | A |
| 20 | 4 | B |
| 30 | 0 | C |
+-----------+-----------+------------+
MySQL でこのような表を得るためには、もちろん VIEW, UNION が
使えないと思いますが、どう言った方法で実現できるのでしょうか?
よろしくお願いします。
--
福田稔 Minoru Fukuda
fukuda@xxxxxxxxxx
kinol interactive inc.
http://www.kinol.co.jp
-> 4039 2001-07-18 18:17 [Minoru Fukuda <fukud] VIEW, UNION の代替方法 4040 2001-07-19 04:11 ┗[とみたまさひろ <tomm] 4044 2001-07-19 11:58 ┗[Minoru Fukuda <fukud] 4082 2001-07-29 15:16 ┗[とみたまさひろ <tomm]