過去ログ

                                Page      36
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼テーブルの分割  はんにん 02/9/19(木) 12:07
   ┗Re:テーブルの分割  こうちゃん 02/9/19(木) 12:23
      ┗追記・並び替え  こうちゃん 02/9/19(木) 12:27
         ┗おバカさんでした  はんにん 02/9/19(木) 16:51
            ┗サブクエリでできますね  こうちゃん 02/9/19(木) 17:34
               ┗追記・パフォーマンスも検討してね  こうちゃん 02/9/19(木) 17:41
                  ┗有り難う御座いました  はんにん 02/9/19(木) 19:28

 ───────────────────────────────────────
 ■題名 : テーブルの分割
 ■名前 : はんにん <hakuntei@hal.ne.jp>
 ■日付 : 02/9/19(木) 12:07
 -------------------------------------------------------------------------
   テーブル TT
 1 日付 業者名 品名 数量 単価 品名1 数量1 単価1
 2 9/19  AAA  aaaa   10  15 bbbb   15   20
 1 9/19  BBB  aaaa    8  15 bbbb    5   20

   テーブル又はクエリー
  日付 業者名 品名 数量 単価
   9/19  AAA  aaaa  10  15
   9/19  AAA  aaaa  15  20
   9/19  BBB  aaaa   8   15
   9/19  BBB  aaaa   5   20

上記のような”テーブル TT”があり、(実際は品名4、数量4
  、単価4まであります)下記のようにしたいんです
  万が一出来ないのであれば、不可能だと言うことでも
  教えて頂ければ幸いです。 宜しくお願いします。

 Windows XP
 Office 2000

 ───────────────────────────────────────  ■題名 : Re:テーブルの分割  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/19(木) 12:23  -------------------------------------------------------------------------
   はんにん さん、こんにちは

>テーブル TT
> 1 日付 業者名 品名 数量 単価 品名1 数量1 単価1
> 2 9/19  AAA  aaaa   10  15 bbbb   15   20
> 1 9/19  BBB  aaaa    8  15 bbbb    5   20
>
>   テーブル又はクエリー
>  日付 業者名 品名 数量 単価
>   9/19  AAA  aaaa  10  15
>   9/19  AAA  aaaa  15  20
>   9/19  BBB  aaaa   8   15
>   9/19  BBB  aaaa   5   20

これは、こっちが正解ですか?単純ミス?

  日付 業者名 品名 数量 単価
   9/19  AAA  aaaa  10  15
   9/19  AAA  bbbb  15  20
   9/19  BBB  aaaa   8   15
   9/19  BBB  bbbb   5   20

>上記のような”テーブル TT”があり、(実際は品名4、数量4
>  、単価4まであります)下記のようにしたいんです
>  万が一出来ないのであれば、不可能だと言うことでも
>  教えて頂ければ幸いです。 宜しくお願いします。
>
> Windows XP
> Office 2000

UNIONクエリ使ったらどうでしょ?
クエリを作成して、SQLペインに貼り付けてみてください。
なお、実際は品名4、数量4、単価4までUNIONでつないでね^^;

SELECT TT.日付 AS 日付, TT.業者名 AS 業者名, TT.品名 AS 品名, TT.数量 AS 数量, TT.単価 AS 単価
FROM TT
UNION ALL
SELECT TT.日付 AS 日付, TT.業者名 AS 業者名, TT.品名1 AS 品名, TT.数量1 AS 数量, TT.単価1 AS 単価
FROM TT

 ───────────────────────────────────────  ■題名 : 追記・並び替え  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/19(木) 12:27  -------------------------------------------------------------------------
   必要に応じて、SQLの最後に

ORDER BY 日付, 業者名, 品名

を付加してね。

 ───────────────────────────────────────  ■題名 : おバカさんでした  ■名前 : はんにん <hakuntei@hal.ne.jp>  ■日付 : 02/9/19(木) 16:51  -------------------------------------------------------------------------
   こうちゃん さん
有り難う御座いました、完璧です
ただ出来て初めて知るバカさ加減で、
品名1,数量1、単価1に必ずデータが入る
訳ではなかったんです。 データがない時もある為
下記のようになってしまいます。このクエリを
もう一度、選択クエリで作り、それを削除クエリ
で削除という方法しか考えられないんですが
もっと合理的な方法があるんでしょうか?
何卒宜しくお願いします

   テーブル又はクエリー
  日付 業者名 品名 数量 単価
   9/19  AAA  aaaa  10  15
   9/19  AAA 
   9/19  BBB  aaaa   8   15
   9/19  BBB

 ───────────────────────────────────────  ■題名 : サブクエリでできますね  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/19(木) 17:34  -------------------------------------------------------------------------
   はんにん さん、こんにちは

>品名1,数量1、単価1に必ずデータが入る
>訳ではなかったんです。 データがない時もある為
>下記のようになってしまいます。このクエリを
>もう一度、選択クエリで作り、それを削除クエリ
>で削除という方法しか考えられないんですが
>もっと合理的な方法があるんでしょうか?
>何卒宜しくお願いします
>
>   テーブル又はクエリー
>  日付 業者名 品名 数量 単価
>   9/19  AAA  aaaa  10  15
>   9/19  AAA 
>   9/19  BBB  aaaa   8   15
>   9/19  BBB

品名と数量、単価はセットで存在するとして、UNIONクエリをサブクエリとしてWHERE条件で品名がNULL以外のレコードを取り出します。
こんな感じですね。

SELECT T.日付, T.業者名, T.品名, T.数量, T.単価 FROM
(SELECT TT.日付 AS 日付, TT.業者名 AS 業者名, TT.品名 AS 品名, TT.数量 AS 数量, TT.単価 AS 単価
FROM TT
UNION ALL SELECT TT.日付 AS 日付, TT.業者名 AS 業者名, TT.品名1 AS 品名, TT.数量1 AS 数量, TT.単価1 AS 単価
FROM TT
ORDER BY 日付, 業者名, 品名) AS T
WHERE T.品名 IS NOT NULL

 ───────────────────────────────────────  ■題名 : 追記・パフォーマンスも検討してね  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/9/19(木) 17:41  -------------------------------------------------------------------------
   データ量が多い場合はサブクエリだと遅くなるので、個々のSELECTにWEHERE条件つけたほうがパフォーマンスはよくなるかも・・

SELECT TT.日付 AS 日付, TT.業者名 AS 業者名, TT.品名 AS 品名, TT.数量 AS 数量, TT.単価 AS 単価
FROM TT
WHERE TT.品名 IS NOT NULL
UNION ALL
SELECT TT.日付 AS 日付, TT.業者名 AS 業者名, TT.品名1 AS 品名, TT.数量1 AS 数量, TT.単価1 AS 単価
FROM TT
WHERE TT.品名1 IS NOT NULL
ORDER BY 日付, 業者名, 品名

 ───────────────────────────────────────  ■題名 : 有り難う御座いました  ■名前 : はんにん <hakuntei@hal.ne.jp>  ■日付 : 02/9/19(木) 19:28  -------------------------------------------------------------------------
   ▼こうちゃん さん
  有り難う御座いました

 品名4、数量4、単価4 まで設定して完璧に作動しています
 
>個々のSELECTにWEHERE条件つけたほうがパフォーマンスはよくなるかも

   データが少ないので、処理速度の違いは解らないんですが
   個々のSELECTに条件を設定しました。

 本当に有り難う御座いました

 また来ると思いますので、その時も宜しくお願いします。 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 36