- PR -

MySQL(3) もう一つよろしくお願いします。

1
投稿者投稿内容
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-08-17 22:27
もう一つ、うまくいかないものがあります。
まず、以下のようにテーブルを作成しました。
mysql> select * from tb1_novel;
+------+--------------------+-------+
| code | title | price |
+------+--------------------+-------+
| 1111 | しおりとシオリ | 580 |
| 2222 | しおりをめぐる冒険 | 680 |
| 3333 | SQLをわしずかみ | 430 |
| 4444 | しおりパパの贈物 | 980 |
+------+--------------------+-------+
4 rows in set (0.00 sec)

そこで、以下のサブクエリを実行しようとしたら、
mysql> select * from tb1_novel where price > (select AVG(price) from tb1_novel);

ERROR 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 AVG(price) from tb1_novel)' at line 1


上記以外でも別のテーブルで
elect team, min(point2) as lowest from tb1_results group by team having max(point2) >= (select avg(point1) from tb1_results);

ERROR 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 avg(point1) from tb1_results)' at line 1

になってしまいます。これ以外にもサブクエリは一度も成功してません

OS:Fedora2
MySQL:4.0.20

しつこくて済みません。よろしくお願いします。
よねだ
常連さん
会議室デビュー日: 2002/10/13
投稿数: 22
投稿日時: 2004-08-17 23:43
 米田です。

http://dev.mysql.com/doc/mysql/ja/ANSI_diff_Subqueries.html
>1.8.4.1 サブクエリ
>MySQL バージョン 4.1 では、サブクエリと派生テーブル(名前のないビュー)がサポート
>されています。 See section 6.4.2 サブクエリ構文。

>4.1 より前のバージョンの MySQL については、結合などの方法によって、ほとんどの
>サブクエリを記述し直すことができます。 See section 6.4.2.11 初期の MySQL
>バージョンに合わせたサブクエリの書き換え。
という訳で、
>MySQL:4.0.20
が原因だと思います。
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-08-17 23:53
そうだったのですね。有難うございます。
もし、私が今から学ぶならまた、現場で使うのなら、4.1 をインストールして、サブクエリを今から使用した方がよろしいのでしょうか?それとも今の 4.0 で学習していった方がよろしいのでしょうか?
よろしくお願いします。
kejiuyudu
ベテラン
会議室デビュー日: 2004/08/11
投稿数: 82
投稿日時: 2004-08-18 04:00
次の view の勉強をしようとしたら、やはり進めないので、 今 updateしました。サブクエリは成功しました。有難うございました。がんばります。
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-10-10 14:51
引用:

kejiuyuduさんの書き込み (2004-08-17 22:27) より:
もう一つ、うまくいかないものがあります。
まず、以下のようにテーブルを作成しました。
mysql> select * from tb1_novel;
+------+--------------------+-------+
| code | title | price |
+------+--------------------+-------+
| 1111 | しおりとシオリ | 580 |
| 2222 | しおりをめぐる冒険 | 680 |
| 3333 | SQLをわしずかみ | 430 |
| 4444 | しおりパパの贈物 | 980 |
+------+--------------------+-------+
4 rows in set (0.00 sec)

そこで、以下のサブクエリを実行しようとしたら、
mysql> select * from tb1_novel where price > (select AVG(price) from tb1_novel);

ERROR 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 AVG(price) from tb1_novel)' at line 1




select a.* from tb1_novel a,tb1_novel b
group by a.*
having a.price > AVG(b.price)

でええよ
1

スキルアップ/キャリアアップ(JOB@IT)