一ヶ月毎の在庫数を抽出したテーブル1,2,3にそれぞれ商品名、JANコード、在庫数というフィールドがあるとします(レコード数はそれぞれバラバラとします。)テーブル1にある商品名のフィールドを基準とし、その商品の在庫数の推移をクエリでつくりたいのですが、その辺のリレーションの作り方がわかりません。完成のイメージとしてはフィールドはテーブル1の商品名、JAN、在庫数、テーブル2の在庫数、テーブル3の在庫数という感じです。よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2006/10/31 13:37:32
  • 終了:2006/11/07 13:40:03

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/10/31 14:12:43

ポイント35pt

月別にテーブルが分かれているのはどうなのか?

という疑問は無い事も無いのですが、

SELECT * FROM
   ( SELECT 商品名,JAN,在庫数 AS 'A月在庫' FROM テーブル1 ) as tbl_A
  LEFT JION
    ( SELECT 商品名,在庫数 AS 'B月在庫' FROM テーブル2 ) as tbl_B USING ( 商品名 )
  LEFT JOIN
    ( SELECT 商品名,在庫数 AS 'C月在庫' FROM テーブル2 ) as tbl_C USING ( 商品名 )
  ORDER BY 商品名

な感じでしょうか?

id:fangoln No.2

fangoln回答回数20ベストアンサー獲得回数22006/10/31 14:54:07

ポイント35pt

SQLの種別がなかったので、MSSQLServer2000で動くものを作ってみました。

(過去履歴からすると、Access(JET)でしょうか?)

テーブル1に存在してテーブル2,3に存在しない商品の在庫数は、0になるようにしています。


SELECT テーブル1.商品名, テーブル1.JANコード, テーブル1.在庫数, 
       IsNull(テーブル2.在庫数, 0) AS テーブル2の在庫数, 
       IsNull(テーブル3.在庫数, 0) AS テーブル3の在庫数
FROM  (テーブル1 
       LEFT JOIN テーブル2 ON テーブル1.商品名 = テーブル2.商品名) 
       LEFT JOIN テーブル3 ON テーブル1.商品名 = テーブル3.商品名
ORDER BY テーブル1.商品名

Access(JET)の場合には、「IsNull(テーブル2.在庫数, 0)」の代わりに「IIF(ISNULL(テーブル2.在庫数), 0, テーブル2.在庫数)」と置き換えてください。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません