- 締切済み
MySQLの文法について
MySQL初心者です 以下の文法でおかしなところがあったら直していただきたいのですが… テーブルの内容などは関係なく,文法がおかしいか見ていただきたいです バージョンは6.0.6を使っています select c_count, count(*) as custdist from ( select c_custkey, count(o_orderkey) from customer left outer join orders on c_custkey = o_custkey and o_comment not like '%special%products%' group by c_custkey ) as c_orders (c_custkey, c_count) group by c_count order by custdist desc, c_count desc; よろしくお願いします><
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
>文法がおかしいか見ていただきたいです ここでは、自分で考えた上で、分からない部分を具体的に示し、質問することが利用規約になっています。そうでないものは、質問でなく作業依頼として、削除される可能性があります。 >バージョンは6.0.6を使っています 「初心者」という人が、なぜ、MySQL 6.0という開発中のバージョンを使用しているのでしょうか?「MySQL 6.0で実装される機能を、早期に使用したい」といった理由がないなら、MySQL 5.0や5.1を使うべきです。 MySQLでは、 「as 表の別名」 「as 列の別名」 といった別名の付け方は実装されていますが、 「as 表の別名(列の別名,列の別名, ~)」 という構文は実装していないようです。 以下のように修正すれば動くのではないでしょうか? select c_custkey as c_custkey, count(o_orderkey) as c_count from ~ ~中略~ ) as c_orders 最後に、TPCを知っているような人なら、MySQLのマニュアルを見て、自分で調べられると思うのですが?
- phoenix343
- ベストアンサー率15% (296/1946)
えーとまずは単純に一つずつ書いてみたら? どういう順序で切り出したいのか、整理した方がいいと思います。 複雑すぎて分かりません。
補足
説明不足ですみません。 この文法は,TPC-Hというベンチマークに元々入っていたクエリで,他のデータベースでは実行できるようなのですが,MySQLでは実行できなくて…。 文法的に明らかにおかしい点があったら指摘していただけたらなと思ったのです。 ちなみに,エラーの内容としては以下のように表示され,どうも,サブクエリの外側にあるas c_orders (c_custkey, c_count)に問題があるのではないかと思っているのですが… ERROR 1064 (42000) at line 7: 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 '(c_custkey, c_count)
お礼
投げやりな質問で失礼しました。 今学生で,勉強中で,TPCを動かそうとして,MySQLを使い始めたので,バージョンが新しければこの文法に対応しているのかなどと考えて最新バージョンをインストールしてしまいました… chukenkenkouさんの言う通りに文法を修正したところ,ちゃんと動きました! 至らぬ点が多く,申し訳ありませんでした。以後気をつけます。 大変感謝しています。 ありがとうございました。