• 締切済み

アクセスでfrom句にサブクエリを入れられない?

本によるとアクセスではSQL文でFROM句にサブクエリを入れられない と書いてありました。それを知らないでFROM句にサブクエリを記述したら うまくできました。保存も無事できました。ところが ほかのクエリを作る際にまったく同じようにしたつもりでFROM句にサブクエリを記述したら、保存の段階で拒絶されてしまいました。不思議です。それから本を調べて、FROM句にはサブクエリを記述できない、と知りました。なぜできたりできなかったりするのでしょうか。ちなみにうまくいったほうのクエリではサブクエリが as [%&&&**]といったものに置き換えがされていました。このあたりの事情がおわかりの方いらっしゃいませんか。ご教示お願いいたします。アクセス2002です。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

うーん、なんででしょうね? Access2000で試しましたけど保存できましたよ。 フィールドの数が多すぎるとかってありますかねぇ? あとはmdbの修復かけてみるとか。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

Access2000以降では使えるはずですけど。 保存できなかったときって長すぎたとかではなくて?

yamutya
質問者

補足

長さは問題にならない程度です。かえって保存できない方が短いくらいで。「トラブルが生じた」となって原因をMS社に送信しますか?といってきます。 具体的には select top 40 * from (select * from Atable union all * from Btable) といった感じなのです。開くと思った通りのクエリ実行できますが、保存ができないのです。 アクセス2000以降ではfrom句にもサブクエリを記述できるんですか?本にはアクセスではだめだって、ほかのDBMSならできるそうですが・・・

関連するQ&A

  • viewでfrom句にサブクエリが書けない

    こんにちは。MYSQLのVIEWの代替についてお教え下さい。 下記でinner joinについて教えて頂きました。 http://okwave.jp/qa/q7296711.html 環境はWin 7 MYQL5です。 t1テーブルのデータ ID,在庫 001,22 t2テーブルのデータ ID,出庫 001,17 001,3 SELECT A.z AS `在庫`,B.* FROM (SELECT SUM(stock) AS z FROM t1 WHERE id='001' GROUP BY id) A INNER JOIN t2 B ON A.id=B.id というコードで、それぞれのテーブルをグループ化してグループ化したもの同士をJOINしました。 このコードを元にVIEWを作り、そのVIEWを対象にクエリを作ろうと考えていました。 しかしながら、MYSQLのVIEWではFROM句でサブクエリは使えませんでした。 http://www.klab.jp/media/mysql/index4.html 上記のコードを書きなおして、なんとしてもVIEWで利用したいのですが、FROM句でサブクエリを使わずにVIEWを作成する方法がわかりません。 どのようにリライトすればよいか、ご助言お願い致します。

    • ベストアンサー
    • MySQL
  • 「SELECT ~  FROM テーブル名」の後に続く句は「WHERE句」と「ORDER BY句」以外にありますか?

    最近アクセスのSQL文を学びました。 選択クエリのSQL文で 「SELECT ~  FROM テーブル名」 の後に続く句は 「WHERE句」と 「ORDER BY句」以外にありますか? よろしくお願いします。

  • Access select句でのサブクエリ

    Access2010でのサブクエリについてお教えください。 注文テーブル 商品コード,数量,フラグ A,3,x B,2,x C,1,x A,3,y B,4,y C,3,y このようなテーブルがあります。 SELECT 商品コード,数量 FROM 注文テーブル GROUP BY 商品コード A,6 B,6 C,4 やりたい事はフラグがxの数量も表示たいと思っています。結果としては、下記の結果が欲しいです。 A,6,3 B,6,2 C,4,1 select句でサブクエリを作りました。 SELECT 商品コード,数量,(SELCT 数量 FROM 注文テーブル WHERE フラグ='x' GROUP BY 商品コード) FROM 注文テーブル GROUP BY 商品コード しかしこのコードを実行すると、「このサブクエリでは1つのレコードしか返せません」と表示されます。 どこを修正したら正しいデータを取得することができるでしょうか?

  • accessでDISTINCT 句と矛盾

    IIFで置き換えをした結果をソートしようとしましたが、 SELECT DISTINCT a,IIF(IsNull(b), 0, 1) AS c FROM shain ORDER BY a,c [Microsoft][ODBC Microsoft Access Driver] ORDER BY 句 (c) が DISTINCT 句と矛盾しています。 というエラーになりました。 正しいSQLを教えてください。 SELECT DISTINCT a,IIF(IsNull(b), 0, 1) AS c FROM shain ORDER BY a,b も試しましたが同じようにエラーになりました。

  • サブクエリ 述語のTrue/False

    こんにちは。 サブクエリの勉強をしています。下のURLのサイトを見ていますがわからないことがあります。 http://www.techscore.com/tech/sql/SQL7/07_02.html/#sql76 EXISTS, ANY, ALL はサブクエリが返す値に対して、「TRUE」または「FALSE」の評価を行い、メインクエリの WHERE 句で使用されます。っとあります。 /* EXISTS */ SELECT * FROM 商品表 WHERE EXISTS (SELECT * FROM 商品表 WHERE 商品名 = 'BEER'); 上記のSQLが走り、サブクエリの商品表の中にある、商品名がBEERのモノを抽出しなさいというのは理解できます。理解できないのは、「TRUE」、「FALSE」です。これは1行でも結果が帰ってきたら、それはTRUEとみなされて、EXISITSはサブクエリをTRUEと評価するということでしょうか? つまり、どんな述語でもサブクエリで評価された結果が1行でもあれば、それはTRUEという意味になるのでしょうか?いまいち何がTRUEでFALSEなのかがわかりません・・・宜しくお願いします。

  • accessのサブクエリ

    Access2003で以下のようなテーブルがあるとします。 [テーブル名:経費TBL] 会社 , 部署 , 年度 , 月 , 経費 ------------------------------- AAA , AAA01 , 2009 , 1 , 10000 AAA , AAA01 , 2009 , 1 , 20000 AAA , AAA01 , 2009 , 2 , 30000 AAA , AAA01 , 2009 , 3 , 40000 BBB , AAA01 , 2009 , 4 , 50000 BBB , AAA01 , 2010 , 1 , 60000 CCC , AAA01 , 2010 , 1 , 70000 CCC , AAA01 , 2010 , 1 , 80000 ここから以下のような、 会社別、部署別の集計データを作成したいとします。 会社 , 部署 , 200901経費計 , 200902経費計 , … , 201012経費計 この時、デザインビューでの条件指定をどうしたら良いのか いまいちよく分かりません。 会社 , 部署, 経費:200901経費計 , 経費:200902経費計… ↑のようにデザインビューで入れて、 経費計のところの条件で IN ( SELECT * FROM 経費TBL WHERE 年度 = 2009 AND 月 = 1 ) みたいに順に入れていけば良いのかと調べながらやっていましたが、 以下のエラーが出てしまいます。 こういう時のデザインビューの記述方法を教えてください。 宜しくお願い致します。 【エラー内容】 「メイン クエリの FROM 句の予約語 EXISTS を使用しないフィールドを 複数返すサブクエリを作成しました。 サブクエリの SELECT ステートメントを変更し、 1 つのフィールドだけを指定してください。(Error 3306)」

  • Access 2000 サブクエリとJOIN

    Access2000でSQLを発行したのですが、 エラーが出てしまいます。 テーブル(仮にtest1、test2)があるとして test1 ------------------------- 主キー | 番号|項目    1|  1|りんご    2|  2|ぶどう    3|  3|みかん    4|  4|いちご test2 ----------------------------- 一つ目|二つ目| 1| 2| 4| 1| ・・・略 test2には2つのフィールドがあり、1,2,3,4を既定値として 入れるようにしています。 やりたいとこは、test2をグループ化し「一つ目」と「二つ目」 の規定値の個数(1、2、3、4)それぞれのカウントを求めたいのです。 一つのフィールドの場合は、 select * from test1 join test2 test1.番号=test2.一つ目 group by test1.番号 で求められたのですが、二つのフィールドをグループ化した際、 一つ目のフィールドと同じ個数が二つ目のフィールドにコピーされてしまうのです。 ですので、FROM句でサブクエリを結合しその中で、 group化したものを、いくつかのサブクエリと結合し てみたのですが、うまくいきませんでした。 select cnt1.一つ目,cnt2.二つ目 from (select * from test1 left join test2 on test1.番号=test2.一つ目group by test1.番号) as cnt1 left join (select * from test1 left join test2 on test1.番号=test2.二つ目group by test1.番号) as cnt2 on cnt1.番号=cnt2.番号 といった形で作ってみました。 エイリアスをつけてしまった時点でエラーが出ているので、 どうにもしようがありません。 申し訳ないのですが、ご教授のほどよろしくお願いいたします。

  • ACCESSクエリエラー

    ACCESSにてクエリをSQLビューにて直書きにて作成したところ、 『メインクエリのFROM句の予約語EXISTS を使用しないフィールドを複数返すサブクエリを 作成しました。サブクエリの SELECT ステートメントを変更し1つのフィールドだけを指定してください』 と、エラー表示がされました。 クエリは INSERT INTO 売上管理TBL VALUES ( SELECT  date() , 商品名称TBL.ID , 商品名称TBL.個数 , 商品名称TBL.単価 * 商品名称TBL.個数 AS 金額 FROM 商品名称TBL WHERE 商品名称TBL.個数 > 0 ); になっています。

  • SQL-Serverに対してサブクエリが使えない場合がある。

    現在VB5.0(Win98)でSQL Server7(WinNT)を使用しています。 下記のようなサブクエリを使用してSQLを実行しようとしています。 データコントロールのSQLプロパティに直接記述して実行すると、 うまく結果が得られるのですが、 モジュール内でDAOを使用してODBCデータソースに接続し、下記のSQLを実行すると 「入力テーブルまたは、サブクエリが見つかりません。」のようなエラーとなってしまいます。 データコントロールではサブクエリを使用してSQL Serverから結果を取得できるのに モジュール内でSQLを記述してサブクエリを含むSQLを実行するとエラーになってしまうのは 何故でしょうか? サブクエリをどこかで定義する必要などがあるのでしょうか? select new.K_SEID,new.K_HOKENKB,SUM(new.KINGAKU) from (select K_SEID,K_HOKENKB,K_SURYO * B_KAKAKU as KINGAKU from KONYU,BOOK where K_TAISYO = 1 and K_MSGID = B_MSGID and K_LINE = B_LINE) as new group by new.K_SEID,new.K_HOKENKB

  • サブクエリ

    見ていただいてありがとうございます。 ただいま、業務でSQLを作成しているのですが、 なにぶん経験が浅く、行き詰ってしまっています。 どなたかわかる方、どうぞご教授ください。 環境は、 OS:WinXP Honme PG:VB.net Server:SQLServer2000 です。 わからないのは、以下の様なSQLです。 SELECT * from (SELECT tblA.field1 , tblA.field2, MAX(tblA.field3) AS MxNum FROM ( (tblA INNER JOIN tblB ON tblA.field1 = tblB.field1) INNER JOIN tblC ON tblA.field2 = tblC.field1 ) INNER JOIN tblD ON tblA.field4 = tblD.field1 GROUP BY tblA.field1,tblA.field2,tblA.field3) サブクエリの使い方がおかしいらしく エラーとなってしまいます。 (「fromの後に不要な文字が・・・」という  構文エラーになります。) サブクエリとして使用しようとしている()内の SELECT文は、クエリアナライザで実行すると 正常に終了して結果が返ってきます。 大変困っているので、 どうか宜しくお願いいたします。

専門家に質問してみよう