• 締切済み

同一内容のはずだがUNIONで統合されない

二つのテーブルをUNIONで統合しています。 全てではないのですが、統合されずに同じ内容が表示されてしまうデータがあります。 見た目は全く同一ですし、カラムのデータ型も同一です。 仕事上のデータなので具体的な内容は示せないのですが、同じような経験をされた方で解決された方いらっしゃましたらアドバイスをお願いします。

  • tdosj
  • お礼率22% (34/149)

みんなの回答

回答No.2

全てではないとのことなので、多分SQL文はあっていると思われます。問題解決にはデータを疑うべきです。 >見た目は全く同一 と目検でチェックしてるというのがそもそも間違い。例えば「(株)」と「 (株) 」は違うけどフォントによっては同じに見えるはずです。ちなみに前者はオール全角、後者は半角スペースと半角カッコの組み合わせ。他にも全角半角がある文字・記号は全て疑う対象です。 それを解消するには、例えばメモ帳とかにコピペしてみて、UNION項目のデータで検索してみてヒットするか?とか確認した方がいいでしょう。 どうしても目検でチェックするならせめて「MS ゴシック」のように等間隔のフォントを使うべきでしょう。

tdosj
質問者

お礼

片方のテーブルの数値項目の内容を入力し直したら統合できました。 直す前に、ファイル出力して比較したり、数値そのものをテキストエディタへコピペしたりしてみましたが、違いは不明でした。 原因は不明なのですが、その項目の値はキーボードから入力されたものではなくSUM関数の集計結果なので、それが何か関係しているのでしょうか? ただ、どちらのテーブルもSUM関数の集計結果なので余計分かりません。書式等も関係しているのでしょうか? ともかく統合はできたので追々調べてみようと思います。

noname#212058
noname#212058
回答No.1

使用されているデータベースの種類を明示して頂かないと、回答は難しいです。 まぁ、何処かのデータに「改行」「空白スペース」「タブ文字」「制御文字」のようなパッと見た目では目立たないゴミデータが付いているのが、ありがちなパターンですね。UNION で結合使用しているデータを CSV などに出力して、テキスト比較ツールなどで調べたほうが良いかと。

tdosj
質問者

お礼

片方のテーブルの数値項目の内容を入力し直したら統合できました。 直す前に、ファイル出力して比較したり、数値そのものをテキストエディタへコピペしたりしてみましたが、違いは不明でした。 原因は不明なのですが、その項目の値はキーボードから入力されたものではなくSUM関数の集計結果なので、それが何か関係しているのでしょうか? ただ、どちらのテーブルもSUM関数の集計結果なので余計分かりません。書式等も関係しているのでしょうか? ともかく統合はできたので追々調べてみようと思います。

関連するQ&A

  • SQLの統合コマンドについて

    phpMyAdminを使ってます。一つのデータベースに入ってる二つのテーブルを統合するため、機能でいうとFULL OUTER的なのがやりたいのですがphpMyAdminがそれをサポートしていないので、代わりにUNIONを使ってやろうと思ったら、二つのテーブルのカラムの数と型が同じでないとできないらしく、そこで止まってしまってるのですが、どうにかできるコードはないでしょうか? もともとは日本語のデータベース(1)と英語のデータベース(2)で分けていたのですが、英語(2)では入れなくてもいいデータがたくさんあり、カラムの数が2倍くらい変わってしまっているので、今から英語(2)の方を無理矢理日本語(1)に合わせるとなるとなんかデータが変になりそうなのでそれはまだやってないんですが。←無理矢理合わせるのはどうにも方法がなくて最終手段としてやりたいです。 回答よろしくおねがいします。 何か抜けている点があったら言ってください!

    • ベストアンサー
    • MySQL
  • [Access]リストボックスにユニオンクエリの内容を表示した時のフィールド名

    Accessで、テーブルのフィールド名は英数字にして標題を日本語で入れています。 ユニオンクエリの内容をリストボックスに表示させたいのですが、そうするとフィールド名が標題ではなく英数字のフィールド名が表示されてしまいます。 ユニオンさせている全てのテーブルに標題は同じように入っています。 gggee\年mm\月dd\日で設定している書式も反映されません。 ユニオンでは標題が表示されないのでしょうか? VBAで修正する方法などありますか? 分かる方いらっしゃいましたらお願いします。。

  • ACCESS2000 ユニオンクエリーで、同一データについて

    こんにちは。 ACCESS2000で、超初心者から初心者に脱皮中です。 倉庫管理の仕事をしています。 各地の倉庫から在庫データを提出してもらい、データ管理を行っています。 データの内容は 倉庫番号, 品番, 品名, 区分, 数量 です。 一括管理のために、各倉庫のデータをユニオンクエリーでつなぎます。 SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫1 UNION SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫2 … UNION SELECT 倉庫番号, 品番, 品名, 区分, 数量 FROM 倉庫7; この中に、たまたますべてのデータが同一のデータが存在しました。 倉庫7,A00,食器洗剤,破損品,1 倉庫7,A00,食器洗剤,破損品,1 要するに、同じ倉庫に同じものが、同じ状態で同じ数量あったということです。 ユニオンクエリーの結果は、この片方しか表示してくれないのです。 同一データであっても並べて表示し、あとでクロス集計等をしたときに、数量2 と表示したいのですが、知恵をお貸しください。 ちなみにすべてのテーブルに、主キー等は設定していません。

  • 重複カラムを持つ2テーブルの統合について

    ほとんど同じテーブル構成の以下のようなテーブルAとテーブルBがあります。 【テーブルA】 |カラム1|カラム2|カラム3| 【テーブルB】 |カラム1|カラム2|カラム3|カラム4|カラム5| テーブルAには数万件のデータが入っていて、テーブルBのデータは数百件程度です。 テーブルAを破棄して、全てテーブルBにまとめたほうが良いでしょうか? (ほとんどデータが入らない、|カラム4|カラム5|分のデータ量が無駄になる気がしているのですが・・)

    • ベストアンサー
    • MySQL
  • 同じテーブルでのUNION

    テーブルtableである列aのデータが1,2,3,4,5,6,7,8,9と 入っていたとします。 このテーブルを1,2,5,3,4,6,7,8,9という順番で SELECTしたい場合はどのようにすればよろしいでしょうか? select a from table where a IN (1,2) union select a from table where a = 5 union select a from table where a NOT IN (1,2,5) としてみたのですが1,2,3,4,5,6,7,8,9と表示されてしまいます。 宜しくお願いいたします。

  • UNION ALLしたテーブルを個別に並べ変え

    table1、table2、table3というテーブルがあり このそれぞれをidというカラムで並び替えたものを結合するので考えました。 SELECT * FROM `table1` UNION ALL SELECT * FROM `table2` UNION ALL SELECT * FROM `table3` ORDER BY `id` にすると全てを結合したものを並び替えるので SELECT *, '1' AS tbl FROM `table1` UNION ALL SELECT *, '2' AS tbl FROM `table2` UNION ALL SELECT *, '3' AS tbl FROM `table3` ORDER BY `tbl`,`id` という風に書いてみました、結果としてはよさそうですが 方法としては間違ってないでしょうか? 他にいい方法があればアドバイスをお願いします。

  • ユニオンクエリで0と表示される。

    教えてください。 4つのテーブルをユニオンクエリでひとつにしたく以下のようにSQLに書きました。 SELECT ID AS フィールド1 ,No AS フィールド2, Remark AS フィールド3 FROM テーブル1 UNION ALL SELECT ID,No,Remark FROM テーブル2 UNION ALL SELECT ID,No,Remark FROM テーブル3 UNION ALL SELECT ID,No,Remark FROM テーブル4 フィールド2のNOには数字が入っているのですがフィールド2の列にはすべて0と表示されて数字がででてきません。ID(オートナンバー型)とRemark(短いテキスト型)はちゃんと表示されます。もとのテーブル1と2のNoは数値型 テーブル3と4のNoは短いテキスト型です。なにが原因でどうしたら数値が表示されるようになりますか?

  • Access 2000、ユニオンクエリーがどうしても出来ない!

    初歩の質問ですが、ユニオンクエリーが出来ません。 やりたい事は非常に単純です↓↓ 1:テーブル1、テーブル2、テーブル3があります。 2:各テーブルのデータ内容は様々ですが、共通項目として「品番」を持っています。但しテーブル1は「製品名」、テーブル2と3は「品番」という項目名になっています。 3:各テーブル内に、品番が幾つ入っているか、集計クエリでカウントします。項目名が違うので以下のように処理しました。  <テーブル1の場合>    フィールド|品番のカウント: 製品名|タイトル: "テーブル1"    テーブル |テーブル1     集  計 |カウント  <テーブル2(或いは3)の場合>    フィールド|品番のカウント: 品番|タイトル: "テーブル2"    テーブル |テーブル2     集  計 |カウント 4:3の集計クエリーを繋ぎ、テーブル1~3の品番件数を一気に表示させたい  <ユニオンクエリの内容>     SELECT *     from Q0_カウント_テーブル1     UNION select *     from Q0_カウント_テーブル2     UNION select *     from Q0_カウント_テーブル3; 5:私の予想としてはこんな風↓↓出てくるはずだったのですが・・・     品番のカウント| タイトル     ------------------------------        30   | テーブル1        20   | テーブル2        23   | テーブル3  6:結果は「From句の間違いです」と出ます。他の質問も見ましたが、自分のSQLのどこを直せば良いのかわかりません・・・教えてください!

  • ユニオンクエリーで連結されたテーブルを取得したい

    ユニオンクエリーでいくつかのテーブルを連結しておりますが、このデータを選択した時に どのテーブルのデータを選択しているか、テーブル名を取得したいのですが、何か方法はありますでしょうか? 端的に言いますと、ユニオンクエリーで選択したデータの更新をしたいのです。 お分かりになる方がいらっしゃいましたら、どうぞご教授下さい。お願いします。

  • ユニオンクエリで複数ファイルをまとめるには

    ★はじめまして 会社でアクセスを使用している初心者です。 社員データーをアクセスファイルで管理しています。 10人が一つファイルを持って使用しています。 なので、ファイル数は10です。 フィールド(項目)数が128です。 全てのファイルは同じ項目です。 【問題】 (1)社員データーを検索する際に、全てのファイルを開いて検索すると非常に時間がかかります。 (2)社員データーをCSVでエクスポートして、EXCELで集計・分析する際に全てのファイルからエクスポートすると時間がかかります。 【対策】 (1)全てのファイルをまとめようと まとめファイルを作成して 全てのテーブルをリンクして(10ファイル) ユニオンクエリでまとめようと思いました。 【結果】 エラーです。 『定義されているフィールドが多すぎます』と表示されます。 【教えてください】 (1)フィールドが多すぎるとユニオンクエリは使用できないのですか? (2)他に全てのファイルをまとめる方法はないのでしょうか? ご教授お願いします。