C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: MySQLのSyntaxエラーの理由


(過去ログ 130 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■77180 / inTopicNo.1)  MySQLのSyntaxエラーの理由
  
□投稿者/ たくや (32回)-(2015/09/19(Sat) 11:44:38)

分類:[.NET 全般] 

以下のSQLを実行しようとすると「 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 '' at line 1」といったエラーが発生します。
環境はMySQLです。
最後の「WHERE tmp3.RoomStatus = '満'」を抜くと正常に動作します。
何か構文エラーに引っかかるようなことしているのでしょうか。
回避策または構文エラーの理由を教えてください。

SELECT COUNT(*) FROM
(SELECT CASE WHEN tmp1.COUNT < tmp2.COUNT THEN '満' ELSE '空' END AS RoomStatus, tmp2.LodgDate FROM
(SELECT COUNT(*) AS COUNT FROM RoomInfo WHERE RoomType = 'TSG') AS tmp1,
(SELECT COUNT(*) AS COUNT, LodgDate FROM BookingInfo WHERE (LodgDate >= '2015-09-20' AND LodgDate <= '2015-09-25') AND RoomType = 'TSG' GROUP BY LodgDate) AS tmp2
) AS tmp3 WHERE tmp3.RoomStatus = '満'
引用返信 編集キー/
■77202 / inTopicNo.2)  Re[1]: MySQLのSyntaxエラーの理由
□投稿者/ しま (103回)-(2015/09/24(Thu) 10:55:59)
No77180 (たくや さん) に返信
> 以下のSQLを実行しようとすると「 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 '' at line 1」といったエラーが発生します。
> 環境はMySQLです。
> 最後の「WHERE tmp3.RoomStatus = '満'」を抜くと正常に動作します。
> 何か構文エラーに引っかかるようなことしているのでしょうか。
> 回避策または構文エラーの理由を教えてください。
> 
> SELECT COUNT(*) FROM 
> 	(SELECT CASE WHEN tmp1.COUNT < tmp2.COUNT THEN '満' ELSE '空' END AS RoomStatus, tmp2.LodgDate FROM 
> 		(SELECT COUNT(*) AS COUNT FROM RoomInfo WHERE RoomType = 'TSG') AS tmp1, 
> 		(SELECT COUNT(*) AS COUNT, LodgDate FROM BookingInfo WHERE (LodgDate >= '2015-09-20' AND LodgDate <= '2015-09-25') AND RoomType = 'TSG' GROUP BY LodgDate) AS tmp2
> 	) AS tmp3 WHERE tmp3.RoomStatus = '満'

tmp3 に列 RoomStatus が存在していない事はお分かりでしょうか?
tmp3 にある "RoomStatus" は as で記述したエイリアス(別の呼び名)なので where 句では使えません。
直(じか)に ) AS tmp3 where (tmp1.COUNt < tmp2.COUNT) と書くか
select 文で囲んでそこの where 句で RoomStatus='満' と指定するか
するといいと考えます。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -