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 |
はんにん さん、こんにちは >テーブル 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 |
必要に応じて、SQLの最後に ORDER BY 日付, 業者名, 品名 を付加してね。 |
こうちゃん さん 有り難う御座いました、完璧です ただ出来て初めて知るバカさ加減で、 品名1,数量1、単価1に必ずデータが入る 訳ではなかったんです。 データがない時もある為 下記のようになってしまいます。このクエリを もう一度、選択クエリで作り、それを削除クエリ で削除という方法しか考えられないんですが もっと合理的な方法があるんでしょうか? 何卒宜しくお願いします テーブル又はクエリー 日付 業者名 品名 数量 単価 9/19 AAA aaaa 10 15 9/19 AAA 9/19 BBB aaaa 8 15 9/19 BBB |
はんにん さん、こんにちは >品名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 |
データ量が多い場合はサブクエリだと遅くなるので、個々の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 日付, 業者名, 品名 |
▼こうちゃん さん 有り難う御座いました 品名4、数量4、単価4 まで設定して完璧に作動しています >個々のSELECTにWEHERE条件つけたほうがパフォーマンスはよくなるかも データが少ないので、処理速度の違いは解らないんですが 個々のSELECTに条件を設定しました。 本当に有り難う御座いました また来ると思いますので、その時も宜しくお願いします。 |