過去の桐井戸端BBS (桐ver.8)
13037 ユニオンクエリーをしたい おぎ(ぱぱ) 2001/09/14-18:28
皆さんこんばんわ。
環境は WINDOWS95 桐8 SP6 です。

以下の表があります。

発注書.TBL [品名][年月日][入庫数量]
受注.TBL [品名][年月日][出庫数量]

この2つの表を結合表にて
入出庫予定.VIW [品名][年月日][入庫数量][出庫数量]

ということをしたいです。

ACCESSのユニオンクエリーを使えばできそうだな?と思い、
桐で作り始めましたが結合条件の設定でしょうか?思い通りに表示しません。

どのような注意点があるでしょうか?

13042 Re:ユニオンクエリーをしたい 佐田 守弘 2001/09/15-00:35
記事番号13037へのコメント
おぎ(ぱぱ)さんは
お書きになっている
> 発注書.TBL [品名][年月日][入庫数量]
> 受注.TBL [品名][年月日][出庫数量]
>この2つの表を結合表にて
> 入出庫予定.VIW [品名][年月日][入庫数量][出庫数量]
>ということをしたいです。
は、文面を見る限りでは、単なる一般的な結合表の様に見受けます。
(Accessでも単純なセレクションクエリーに見えます)

どの様な結合条件を設定して、どの様な結合結果を得たいのかをもう少し詳しくお知らせ下さい。
また、編集ができる結合表を作りたいのか、編集結果が元表に反映できる結合表を作りたいのかも、お知らせ下さい。

佐田守弘(KS-00119)
13046 Re:ユニオンクエリーをしたい hidetake 2001/09/15-09:33
記事番号13037へのコメント
>入出庫予定.VIW [品名][年月日][入庫数量][出庫数量]

同じ日に同じ品名の入出庫が発生した場合の事を考えると、
それぞれの合計を取って1行にすべきなのですかね?

結合表を用いる場合でしたら、
1.発注書.TBLで[品名][年月日]で並び替え、
  [品名][年月日]をグループとし、[入庫数量]
  を合計とした取るような結合表を作る。
2.受注.TBLで[品名][年月日]で並び替え、
  [品名][年月日]をグループとし、[出庫数量]
  を合計とした取るような結合表を作る。
3.入出庫予定.VIWとして、1と2で作った結合表を元に
  [品名][年月日]をグループとして結合表を作る。
で可能なのでは無いでしょうか?


ついでに古典的な併合を使う法、
1.[品名][年月日][入庫数量][出庫数量]な
  入出庫予定テーブルを作っておく。
2.発注書.TBLで[品名][年月日]で並び替え、
  [品名][年月日]のグループで[品名][年月日]が
  項目値、[入庫数量]を合計とした取る集計を掛ける。
  そして集計行だけを表示する。
3.入出庫予定.TBL に2で集計した結果を読み込ます。

4.受注.TBLで[品名][年月日]で並び替え、
  [品名][年月日]のグループで[品名][年月日]が
  項目値、[入庫数量]を合計とした取る集計を掛ける。
  そして集計行だけを表示する。
5.入出庫予定.TBL で4で集計した結果を併合を掛ける。
  [品名][年月日]が照合で[出庫数量]が複写、併合の方法は両方。
こんな感じで・・・

ps.
桐で表現した SQL文 :-)

受注書.VIW
SELECT 1.[品名] AS [品名],1.[年月日] AS [年月日],#合計(1.[出庫数量]) AS [出庫数量]
FROM "受注書.tbl" AS 1 GROUP BY [品名],[年月日] /* +UNDEFZERO */

発注.VIW
SELECT 1.[品名] AS [品名],1.[年月日] AS [年月日],#合計(1.[入庫数量]) AS [入庫数量]
FROM "発注.tbl" AS 1 GROUP BY [品名],[年月日] ORDER BY
[品名] COLLATE CODE ASC ,[年月日] COLLATE CODE ASC /* +UNDEFZERO */

入出庫.VIW
SELECT 1.[品名] AS [品名],1.[年月日] AS [年月日],1.[出庫数量] AS [出庫数量],2.[入庫数量]
AS [入庫数量] FROM ( SELECT 1.[品名] AS [品名],1.[年月日] AS [年月日],
#合計(1.[出庫数量]) AS [出庫数量] FROM "受注書.tbl" AS 1 GROUP BY
[品名],[年月日] /* +UNDEFZERO */ ) AS 1 /* +VIEW "受注書.VIW"
*/ INNER JOIN ( SELECT 1.[品名] AS [品名],1.[年月日] AS [年月日],
#合計(1.[入庫数量]) AS [入庫数量] FROM "発注.tbl" AS 1
GROUP BY [品名],[年月日] /* +UNDEFZERO */ ) AS 2 /* +VIEW "発注.VIW"
*/ ON 1.[品名] = 2.[品名] AND 1.[年月日] = 2.[年月日] GROUP BY [品名],
[年月日],[出庫数量],[入庫数量] ORDER BY [品名] COLLATE CODE ASC ,
[年月日] COLLATE CODE DESC /* +UNDEFZERO */

この出力は kiri8.ini の [Query] セクションに
SQLOutput=1
なんて記述するとVIW(XXW)のあるフォルダに作成される。
だけど、無保証&何があっても知らない。
K3への問い合わせ絶対禁止。質問も禁止・・・
全て事故自己責任で! :-)


13052 Re:ユニオンクエリーをしたい おぎ(ぱぱ) 2001/09/15-23:15
記事番号13042へのコメント
佐田 守弘さん
>どの様な結合条件を設定して、どの様な結合結果を得たいのかを
>もう少し詳しくお知らせ下さい。

発注書データ
  品名:年月日:入庫数量
  a:010914:20

受注データ
  品名:年月日:出庫数量
  a:010915:10
  a:010916:5

入出庫予定
  品名:年月日:入庫数量:出庫数量
  a:010914:20:0
  a:010915:0:10
  a:010916:0:5

このように見える表がほしいです。
0のところは未定義でもよいのですが私が作ったviwは
発注書の件数*受注の件数が表示されてしまいました。


>また、編集ができる結合表を作りたいのか、編集結果が元表に反映できる
>結合表を作りたいのかも、お知らせ下さい。

入出庫予定ですので編集する必要はありません。
受注の際の在庫状況の確認のみです。
13053 Re:ユニオンクエリーをしたい おぎ(ぱぱ) 2001/09/15-23:21
記事番号13046へのコメント
hidetakeさん
>>入出庫予定.VIW [品名][年月日][入庫数量][出庫数量]
>
>同じ日に同じ品名の入出庫が発生した場合の事を
>考えると、それぞれの合計を取って1行にすべき
>なのですかね?
>
>結合表を用いる場合でしたら、
>1.発注書.TBLで[品名][年月日]で並び替え、
>  [品名][年月日]をグループとし、[入庫数量]
>  を合計とした取るような結合表を作る。
>2.受注.TBLで[品名][年月日]で並び替え、
>  [品名][年月日]をグループとし、[出庫数量]
>  を合計とした取るような結合表を作る。
>3.入出庫予定.VIWとして、1と2で作った結合
>  表を元に[品名][年月日]をグループとして
>  結合表を作る。
>で可能なのでは無いでしょうか?

ご指導ありがとうございます。
グループというのは分かりませんでした。
ヘルプを読み直してみます。

同じ日に同じ品名が複数入庫しても1行にするつもりはありませんので
1)、2)のviwはなくてもいいですよね。



>ついでに古典的な併合を使う法、
受注時に入出庫の予定を参照したいので併合は考えておりません。

在庫数の管理には併合を使う予定ですが。
13054 Re:ユニオンクエリーをしたい 2001/09/16-01:01
記事番号13037へのコメント
おぎ(ぱぱ)さん、はじめまして。
残念ながら桐ではユニオンクエリーは使えないようです。
ユニオンクエリーに限らず、結合表をSQL文で作成できたらどんなに便利だろうと思いますが、
それは、将来に期待するとして・・・。

妥協策としては、作業用の表に発注書.TBLと受注.TBLを読み込んでひとつにまとめるしかないような気がします。

どうしても結合表を使いたければ例えば、発注書.TBLに[区分]という項目を追加して、値は全レコードとも"発注"します。
一方と受注.TBLにも[区分]という項目を追加して、値は全レコード"受注"します。
そして、[区分]を結合条件にして、両方の表の全レコードを抽出する外部結合とします。
 表示項目名[品名]は計算項目として、
  #未定義値変換(["受注.TBL".品名],["発注書.TBL".品名])
 表示項目名[年月日]は計算項目として、
  #未定義値変換(["受注.TBL".年月日],["発注書.TBL".年月日])
 [出庫数量][入庫数量]はそのまま表示。
13055 Re:ユニオンクエリーをしたい hidetake 2001/09/16-08:34
記事番号13053へのコメント
>同じ日に同じ品名が複数入庫しても1行にするつもりはありませんので

併合の必要ない単純読み込みだったようですね (^_^;


>>ついでに古典的な併合を使う法、
>受注時に入出庫の予定を参照したいので併合は考えておりません。

どうしても結合表にこだわるのであれば、関さんの書かれたとおり、
それぞれのテーブルに項目を1つ設けるか、
あるいはダミーの項目を付加する VIW を作ってそれに対して結合を掛けると手もあるでしょうか?
ダミーのVIWなんて無駄な時間を要するだけのようですけど (^^;

13060 単純な読み込みか併合で処理できるのでは 佐田 守弘 2001/09/17-00:02
記事番号13052へのコメント
おぎ(ぱぱ)さん
書かれている様なデータを得るのであれば、単純に発注書データと受注データの
2つの表を入出庫予定に読み込むだけでできそうに見えます。
あるいは、入出庫予定に発注書データと受注データを併合してもできそうです。

もし、1つの日付にある入庫数量と出庫数量を1つの行にまとめるのであれば、併合で行って下さい。
しかし、単に別々の行として読むのであれば、読み込みでもできます。

逆に併合表を使おうとしても、対応する項目が相手方の項目にない形なので、
外部結合を設定するなど、却って面倒になりそうに思います。

佐田守弘(KS-00119)
13061 Re:ユニオンクエリーをしたい hidetake 2001/09/17-07:32
記事番号13055へのコメント
折角ですからユニオンクエリーのお勉強? (^^;

ユニオンクエリー自体は Access を持っていれば
ヘルプにもあるでしょうが、おぎ(ぱぱ)さんが
やりたかったのものの例は次の場所にあります。
http://www.dokidoki.ne.jp/home2/hrmsfm/tips/access/syosai/syo00030.html

私は例で言えば最後のを想定してしまいました。

桐でも一発でこんな事をやれたら便利だと思いますよね・・・

13063 Re:ユニオンクエリーをしたい おぎ(ぱぱ) 2001/09/17-10:42
記事番号13061へのコメント
>ユニオンクエリー自体は Access を持っていれば
>ヘルプにもあるでしょうが、おぎ(ぱぱ)さんが
>やりたかったのものの例は次の場所にあります。
>http://www.dokidoki.ne.jp/home2/hrmsfm/tips/access/syosai/syo00030.html

>私は例で言えば最後のを想定してしまいました。

hidetakeさん。ありがとうございます。
私がしたかったことはまさにこのとおりです。(合計はしませんが)

お忙しい中調べていただいてありがとうございます。


>桐でも一発でこんな事をやれたら便利だと思います
>よね・・・

よね・・・ ってことは桐では1発でできないんでしょうね(;_;)

13064 Re:ユニオンクエリーをしたい おぎ(ぱぱ) 2001/09/17-10:48
記事番号13054へのコメント
関さん
>おぎ(ぱぱ)さん、はじめまして。

はじめまして。お世話になります。


入出庫明細.tblに「読込」or「併合」をかければ
話は早いようですが、参照するだけでありますので
ファイルを作成するまでもないかな?と思っております。

>どうしても結合表を使いたければ例えば、発注書.TBLに[区分]という項目を追加
>して、値は全レコードとも"発注"します。一方と受注.TBLにも[区分]という項目
>を追加して、値は全レコード"受注"します。
>そして、[区分]を結合条件にして、両方の表の全レコードを抽出する外部結合とし
>ます。

幸い伝票番号という項目がお互いにありますのでこれで何とかしてみます。

ありがとうございました。

戻る