• ベストアンサー

2つのselect文をunion all でつなげたらエラーがでた

vivletの回答

  • ベストアンサー
  • vivlet
  • ベストアンサー率36% (24/66)
回答No.1

・Corresponding select-list expressions are incompatible. を翻訳すると下記文になりました。 ・対応する選ばれたリスト表現は相容れないです。 単純なとこですが 1.取得する項目数はあってるか 2.取得する項目の型は同じか 確認してみてください。

recycle_rocket
質問者

お礼

取得する項目の型のところを見直してみて、char型のところをnullにしていたので型が違ってエラーが出ていました。''にすると動きました。有難うございました。

関連するQ&A

  • UNION ALLのように順番がありNULLを返す方法

    SQL初心者です。ACCESSデータベースに対するクエリを書いているのですが、 条件を配列として、その配列の順番に応じたSELECT文を書きたいのです。 SELECT * FROM access_db WHERE ID = '条件' UNION ALL SELECT * FROM access_db WHERE ID = '条件' UNION ALL SELECT * FROM access_db WHERE ID = '条件' UNION ALL... といった具合にSQL文を作成しているのですが、これでは見つからない条件がある場合に、行が繰り上がり条件を格納した配列とはずれが生じてしまいます。 見つからなかった場合にNULLまたはそれを表せる何かを抽出結果として組み込むことはできますか? SQL初心者のためUNION ALL程度しか近いものが見つけられなく、困っています。 どなたかよろしくお願いします。

  • 10gで動いていたSELECT文が11gでエラー

    お世話になります。 10gR2データベースで動かしていたPL/SQLプログラム内の、とあるSELECT文が、11gR2環境ではエラーが発生してしまい、動きません。 そのSELECT文をそのまま掲載するのは難がありますので、初期サンプルDBでも動くSELECT文に直したものを掲載させて頂きます。 (本物のSELECT文と同じ構文であることに重点を置いているため、掲載するSELECT文の意味不明さは無視して頂ければ幸いです) ----------- 10g環境:Database10g Enterprise Edition 10.2.0.1.0 11g環境:Database11g Enterprise Edition 11.1.0.6.0 10g:まったく問題なく動作する 11g:エラー(下記エラーメッセージ) 行2でエラーが発生しました。 ORA-03113:通信チャネルでend-of-fileが検出されました。 SELECT文: SELECT A.LAST_NAME FROM (EMPLOYEES A FULL OUTER JOIN DEPARTMENTS B ON (A.DEPARTMENT_ID = B.DEPARTMENT_ID AND ((A.SALARY >11000 AND COMMISSION_PCT IS NULL) OR B.MANAGER_ID = 100))); ----------- エラー番号をインターネットで調べるとオラクルサポートに連絡しなければならないようもののようですが・・・接続や通信関係ではなく、オプティマイザや実行計画に問題がある(仕様変更?)のではないかと思います。 結合内の追加条件を外に出し、SELECT文本体のWHERE句に移動すると動きますが、この現象の原因をご存知の方、ご教示いただければ幸いです。

  • ユニオンクエリの保存方法

    SELECT * FROM 西クエリ UNION ALL SELECT * FROM 神戸クエリ; UNION ALL SELECT * FROM 東クエリ; UNION ALL SELECT * FROM 戸西クエリ; UNION ALL SELECT * FROM 西クエリ; UNION ALL SELECT * FROM 宮北クエリ; UNION ALL SELECT * FROM 尼クエリ; UNION ALL SELECT * FROM 馬クエリ; 以上のユニオンクエリを組みました これを ファイル名"森本"エクセルに保存したいのですが  命令文を指導願います

  • SQL文でエラーが出ます。

    MySQLの事で質問です。 テーブル1~4を結合してフィールド「comment」を検索 する時にフィールド「postDate」の降順でソートしたい のですがエラーが出ました。 「SQLコマンド」 select text from table1 union all select comment from table2 union all select comment from table3 union all select comment from table4 where match(commentIndex) against("検索ワード" in boolean mode) order by postDate desc; 試しに union all select comment from table2 union all select comment from table3 union all select comment from table4 の部分を削除して実行してみた所、成功しました。 後、order by postDate desc;のみ削除した場合でも成功しました。 エラーの内容はこれです↓↓ Unknown column 'postDate' in 'order clause' フィールド「postDate」は存在します。 (varchar型何ですが、それがいけないと思い date型やdatetime型と変えてみましたがダメでした) 何とかソートしたいのですがどうすればいいのでしょうか?

    • ベストアンサー
    • MySQL
  • UNION ALLでつなげた複数ビューの集計

    お世話になっています。 現在下記のようなSQLを組んでいます。 ビュー1の集計結果 UNION ALL ビュー2の集計結果 UNION ALL ビュー3の集計結果 実行結果 例 年月     人数  金額 201104   3    20000 201105   2    10000 201104   1    5000 GROUP BY句で年月を集計したビューをUNION ALLでつないでいるため、 当然のように同じ年月が何度も出てくるため、テストがしづらくなっています。 やりたいこととしては、さっきの実行結果をさらに年月で集計することを 考えています。 年月     人数  金額 201104   4    25000 201105   2    10000 対策として、下記のように集計したビューをUNION ALLでつないだ結果を さらに集計するSQLを作りました。 SELECT  FROM( ビュー1の集計結果 UNION ALL ビュー2の集計結果 UNION ALL ビュー3の集計結果 ) GROUP BY その結果、下記のエラーが発生しました。 ORA-00935:グループ関数のネスト・レベルが深すぎます。 環境はoracle11gです。 あとは、SQLのFROM句の()の部分をビューとして作成し、 更にそのビューを呼び出して集計するくらいしか思いつかないです。 今回作ろうとしてるのはテスト用のSQLのため、SQL文と実行結果を残したいので、 できればビューやプロシージャーは作らずに、SQLのみで作成したいと考えています。 何か良い方法はありますでしょうか? 宜しくお願い致します。

  • ユニオンクエリ 「FROM 句の構文エラーです。」

    ユニオンクエリで複数のテーブルをつなげたいのですが SELECT * FROM 2003(T_案件) UNION ALL SELECT * FROM 2004(T_案件); とすると、 「FROM 句の構文エラーです。」 となります。 二つのフィールドの名前や数やデータ型は一緒のはずです。 何がダメなのでしょうか?

  • SELECT出来るのにDELETE出来ないのはなぜ

    MySQLで下記SELECTレコードを削除したいと思い、 DELETEへ変えたら文法エラーになります。 SELECT * FROM `piyo` AS a LEFT JOIN `hoge` AS c ON a.`hoge_id` = c.`hoge_id` WHERE c.`x_id` =13 DELETE * FROM `piyo` AS a LEFT JOIN `hoge` AS c ON a.`hoge_id` = c.`hoge_id` WHERE c.`x_id` =13 どう書けば良いでしょうか?

    • ベストアンサー
    • MySQL
  • SELECT文でLEFT関数を使うと未定義関数ですと言われる

    VBソース上では SELECT LEFT(~~~,4) AS 項目 FROM テーブル と SELECT文で書いてもエラーにならずオープンできるみたいなのですが そのSQL文をACCESS2000上で動かすと 未定義関数LEFTがあると言われます どなたか分かる方至急お願いします!!!

  • LEFT OUTER 外部結合で一致しない値も表示

    select table1.*, table2.no from table1 inner left outer join table2 on table1.id = table2.no 上記の文を使って、一致した値がなくても、 すべて表示させた表を完成させたいのですが、 エラー #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left outer join table2 on table1.id = table2.no~ が出てしまいます。 何がいけないのか、LEFT OUTERなしでやってみると、 きちんと値が返ってきました。 詳しい方いらっしゃいましたら、どうかお知恵を貸してください。 お願いいたします。

    • ベストアンサー
    • MySQL
  • ユニオンクエリの場合は「Like [Forms]![フォーム1]![テキスト0]」とはできないのでしょうか?

    こんにちは。いつもお世話になります。 早速ですが T果物、T野菜、T花の3つテーブルでユニオンクエリを作成しました。 (各テーブルのフィールド名は「名前」です。) SQL文は ************************************************ SELECT 名前.名前, * FROM [select * from T果物 UNION ALL select * from T野菜 UNION ALL select * from T花 ]. AS 名前; ************************************************ です。 次に図1の様にテキストボックスに名前を入力してコマンドボタンを押してクエリを開く為のユーザーフォームを作成しました。 コマンド2を押したときは Private Sub コマンド2_Click() DoCmd.OpenQuery ("ユニオンクエリ") End Sub でユニオンクエリを開く動作を指示してあります。 ここまでなら問題なく作業ができるのですが テキストボックスに入力されている名前を含むものがコマンドボタンを押すと表示されるようにしたいのですが どうもユニオンクエリだとうまくいきません。 ユニオンクエリはデザインビューなら図2、 SQL文なら ************************************************ SELECT 名前.名前, * FROM [select * from T果物 UNION ALL select * from T野菜 UNION ALL select * from T花 ]. AS 名前 WHERE (((名前.名前) Like [Forms]![フォーム1]![テキスト0])); ************************************************ とすると、図3のようなエラーが出てしまいます。 ユニオンクエリではなく、普通のクエリ(選択クエリ?)なら 「Like [Forms]![フォーム1]![テキスト0]」の一文を入れても 問題なく作業できます。 何かアドバイスお願い致します。