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]