MySQLのCREATE VIEWがうまく動作しない

このQ&Aのポイント
  • SQL初心者のため、MySQLのCREATE VIEW文がうまく動作しません。
  • Win98にMySQL Ver3.23.51をインストールし、CREATE VIEW文を使用しようとするとERROR 1064が表示されます。
  • MySQLはCREATE VIEW文をサポートしていない可能性があります。原因を特定できずに困っています。
回答を見る
  • ベストアンサー

MySQLのCREATE VIEWがうまく動作しません。

SQL初心者です。今回仕事で使う事になり、Win98に MySQL Ver3.23.51をインストールしたのですが、 CREATE VIEW文がうまく動作しません。 例えば MAIN と言うテーブルが存在する時に MySQLプロンプト上で SELECT * FROM MAIN; とやるとちゃんと動作して表示してくれるのですが、 これをTEMPと言うビューを作成したい場合に CREATE VIEW TEMP AS SELECT * FROM MAIN; とやると ERROR 1064: You have an error in your SQL syntax near \'VIEW TEMP AS SELECT * FROM MAIN\' at line 1 と出て来てしまいます。文法的には間違ってないはずなのですが、何がいけないのでしょうか?MySQLはCREATE VIEW文をサポートしていないのでしょうか? 周りに詳しい人間がいないので、原因がわからなくて つまづいています。どうかよろしくお願いします.

noname#199420
noname#199420

質問者が選んだベストアンサー

  • ベストアンサー
  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

MySQL3.xx系ではVIEWは未対応です。 # 確かにVIEWに未対応なのは少々痛いですね。

参考URL:
http://www.mysql.com/doc/A/N/ANSI_diff_Views.html
noname#199420
質問者

お礼

どうもありがとうございました。 SQLの入門書には当たり前のように書いてあったので、てっきりどのSQL環境でも使えるとばかり思っていたのですが…やっぱりダメだったんですね。それでも「まさか…使えないのかな?」と思ってネットでかなり検索してみたのですが、ハッキリと「使えません!」と断言しているページが見つからなかったので、かすかな望みは抱いていたのですが…。 とりあえず、VIEWを使わないで解決できる方法を考えてみたいと思います。 お手数をお掛けしました。

関連するQ&A

  • PHP+MySQL SQL文を外部ファイル化したい。

    表題のとおりなのですが… $result = mysql_query( "SELECT * FROM FOO" ); では、動作しています。 このセレクト文を、selectFOO.sql として外部ファイル化し、 (ファイルの中身は、「SELECT * FROM FOO」) $result = mysql_query( selectFOO.sql ); とすると、 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 'selectFOO.sql' at line 1 が返ってきます。 SQL文が正しくないよ。マニュアル見てね。 と言われてるのは分かるのですが、 マニュアルのどこを見れば良いのかさえ分かりません。 助けてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • MySQL4でViewの代わりにできますか?

    PostgreSQLで下記のようなビューを作成し、そのビューから日付でgroupbyして日付ごとのユニーク件数を取っていました。 ---------------------------------------------- create view v_uniqcountday as select substring(datetime, 1, 8) as date, uniqid, careercd, count(*) as cnt from accesslog group by date, uniqid, careercd order by date; select date, count(*) as cnt from v_uniqcountday where (date >= xxx) and (date < xxx) group by date; ---------------------------------------------- しかし、MySQLではViewは作成できないようです。 そこでselect文のみで上記のような集計は可能でしょうか? よろしくお願いいたします。

  • MySQLのサブクエリーでエラーがでます

    現在MySQLを使って開発をしています。 SQLもMySQLもまだあまり使ったことがないのでなにか大きな勘違いをしている かもしれませんが、自分で作ったデータベースにMysqlコマンドでアクセスし、 以下のようにselectを行うとsyntaxエラーが発生します。 mysql> select CREATE_DATE from user where cust_id = (select cust_id from customer where memo = 'memo'); ERROR 1064: You have an error in your SQL syntax near 'select cust_id from customer where memo = 'memo')' at line 1 しかしサブクエリーの内容も、その前のselectもそれぞれ下記のように単体で実行すると正常に動作するので、文法的には間違っていないと思います。 ERROR 1064のsyntaxエラーは何を指しているのでしょうか? ぜひご教示ください。 mysql> select cust_id from customer where memo = 'memo'; +---------+ | cust_id | +---------+ | 1 | +---------+ 1 row in set (0.00 sec) mysql> select CREATE_DATE from user where cust_id = '1'; +-------------+ | CREATE_DATE | +-------------+ | 2001-07-23 | +-------------+ 1 row in set (0.00 sec)

  • mysql で副問い合わせができない (長文)

    レンタルサーバー上のmysqlで副問い合わせがうまくできません お手数おかけしますが、何か情報をいただけましたら幸いです 【質問内容】 レンタルサーバー上のmysqlで副問い合わせがうまくできない 【詳細】 ローカルPC上 の mysql で 副問い合わせをするとうまくいくのですが レンタルサーバー上では syntax エラーが出てしまいます ●状況1 たとえば ローカルPC上のmysql で select * from (SELECT * FROM ronbun_art_tbl) AS TBL_B; を実行すると正しく結果を返すのですが レンタルサーバー上だと エラーとなる ●状況2 レンタルサーバー上で SELECT * FROM ronbun_art_tbl は結果をちゃんと返すのですが select * from (SELECT * FROM ronbun_art_tbl) AS TBL_B; をはエラーとなる 【その他の情報】 サーバー ハッスルサーバー mysqlバージョン 4.0.24 ローカルのmysql 4.1 【エラーの内容】 #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 'SELECT * FROM ronbun_art_tbl ) AS TBL_B LIMIT 0, 30' at line 1

    • ベストアンサー
    • MySQL
  • viewの性能

    あるテーブルがあって、Viewがそのままテーブルを参照してます。 そのViewをそのまま参照しているViewが階層的にあるとします。 テーブルA ← View1 ← View2 ← View3 [SQL的イメージは] ・creat table テーブルA (・・・) ・create view1 as select * from テーブルA ・create view2 as select * from view1 ・create view3 as select * from view2 質問したい事として、 View1 を参照するのとView3を参照するのは、View1を参照するのが 階層化が無い分、速いのでしょうか? それともそのまま参照している場合、あまり速さは変わらないのでしょうか?

  • MySQL5で、SUMした値を新たにカラムとして追加したビューを作成し

    MySQL5で、SUMした値を新たにカラムとして追加したビューを作成したいのですが、どういうSQLを書けばよいかわかりません。 今、Aというテーブルがあり、f1,f2,f3というカラムがあります。 このテーブルを元にvwAというビューを作成したいのですが、その際、f1でGroup Byしたf2のSUMをf2Keiというカラム名で追加し、最終的にf3とf2Keiという2つのカラムを持ったビューにしたいです。 create view vwA as select f3,select SUM(f2) as f2Kei from A GROUP BY f1 from A; と書いてみましたがエラーを返されました。 どのようなSQLを書けばよいか、ご教授ください。

  • MySQL 配列もどきを条件式に

    MySQL5.5です PostgreSQLからMySQLへ移行作業をしています PostgreSQLの配列型(文字)をMySQLのBLOB型にして格納しています {"ABC", "EFG"}といった形式で格納しているのですが 以下のSQL文をMySQLで使用できる形にしたいのです SELECT * FROM table WHERE Test[1] LIKE '%%' TestがPostgreSQLでの配列になります エラーメッセージは以下の通りです db_query error. 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 '[1] like '%%' 以下のようにAS句で適当な名称を与えて引き出せないかと考えたのですが、「Unknown column 'tst'」となり取得することはできませんでした SELECT *, REPLACE(SUBSTRING(Test, 1, LOCATE(',',Test) - 1), '{', '') AS tst FROM table WHERE tst LIKE '%%'; 何か良い方法などありましたら教えてください、よろしくお願いします

    • ベストアンサー
    • MySQL
  • MySQLでのエラー

    MySQLのコマンド画面で、データベースを作成しています。 そこで、WEB上を参考にして打ち込んでみたところ ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near ')' at line 1 とでます。 僕が打ち込んだ文は以下のとおりです。 mysql> create database odinms; です。 間違いなどがあればご指摘お願いします。

  • MySQLでのEXCEPTについて

    テーブルabcに +----+ | ID | +----+ | 001| | 002| | 003| | 004| +----+ テーブルxyzに +----+ | ID | +----+ | 002| | 003| | 005| +----+ のとき、 select * from abc except select * from xyz; として、abcに属し、xyzには属さないIDを出したいのですが、 ERROR 1064 (42000): 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 'selec t * from xyz' at line 3 のエラーが出ます。 何か方法はありますか?

    • ベストアンサー
    • MySQL
  • MySQLのエラーコード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 '?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash =' at line 1 ) You~nearまではいつもどおりなので分かるのですが、その後が何やらよく分からないので、見方を教えていただけないでしょうか? なお、SQL文は以下の通りです。 select カラム名1 from テーブル名 where カラム名2=$i

    • ベストアンサー
    • MySQL