mysql:4044
From: Minoru Fukuda <Minoru Fukuda <fukuda@xxxxxxxxxx>>
Date: Thu, 19 Jul 2001 11:58:59 +0900
Subject: [mysql 04044] Re: VIEW, UNION の代替方法
福田@キノルです。 とみたさん。ご指摘ありがとうございました。 > 普通に、join するという方法ではダメでしょうか。 > > select sum(tableNyuuko.kazu) as nyuukoSuu, > sum(tableShukko.kazu) as shukkoSuu, > tableNyuuko.shouhinmei > from tableNyuuko left join tableShukko using (shouhinmei) > group by shouhinmei; ん〜。これだと私が最初に出した例のように、入庫(tableNyuuko)の商品が 出庫(tableShukko)の商品すべてを含んでいればの話(例1)ですよね。出庫の方が 商品の種類が多い場合(例2)、入庫と出庫でそれぞれにしかない商品がある場合(例3) では使えないですよね。 ここで、出庫している商品は必ず入庫しているはずだと言う前提なら例1)のような パターンしかないのですが、先月入庫した商品が今月売れて、今月の入出庫表を作ろうと すると例2、例3が出てくるのです。 例1)入庫の商品が出庫の商品すべてを含む場合 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) 欲しい結果 +-----------+-----------+------------+ | nyuukoSuu | shukkoSuu | shouhinmei | +-----------+-----------+------------+ | 10 | 3 | A | | 20 | 4 | B | | 30 | 0 | C | +-----------+-----------+------------+ -------------------------------------------------------------------- 例2)出庫の商品が入庫の商品すべてを含む場合 mysql> select * from tableNyuuko; +----------+------+------------+ | nyuukoID | kazu | shouhinmei | +----------+------+------------+ | 1 | 1 | A | | 2 | 2 | B | +----------+------+------------+ 3 rows in set (0.00 sec) mysql> select * from tableShukko; +----------+------+------------+ | shukkoID | kazu | shouhinmei | +----------+------+------------+ | 1 | 3 | A | | 2 | 4 | B | | 3 | 5 | C | +----------+------+------------+ 2 rows in set (0.01 sec) 欲しい結果 +-----------+-----------+------------+ | nyuukoSuu | shukkoSuu | shouhinmei | +-----------+-----------+------------+ | 1 | 3 | A | | 2 | 4 | B | | 0 | 5 | C | +-----------+-----------+------------+ -------------------------------------------------------------------- 例3)入庫と出庫でそれぞれにしかない商品がある場合 mysql> select * from tableNyuuko; +----------+------+------------+ | nyuukoID | kazu | shouhinmei | +----------+------+------------+ | 1 | 1 | A | | 2 | 2 | B | +----------+------+------------+ 3 rows in set (0.00 sec) mysql> select * from tableShukko; +----------+------+------------+ | shukkoID | kazu | shouhinmei | +----------+------+------------+ | 1 | 3 | D | | 2 | 4 | E | +----------+------+------------+ 2 rows in set (0.01 sec) 欲しい結果 +-----------+-----------+------------+ | nyuukoSuu | shukkoSuu | shouhinmei | +-----------+-----------+------------+ | 1 | 0 | A | | 2 | 0 | B | | 0 | 3 | D | | 0 | 4 | E | +-----------+-----------+------------+ -- 福田稔 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]