[前][次][番号順一覧][スレッド一覧]

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]