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

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

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

Re[11]: SQL 構文についての質問


(過去ログ 30 を表示中)

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

■14345 / inTopicNo.1)  SQL 構文についての質問
  
□投稿者/ kazu (13回)-(2008/02/15(Fri) 17:29:23)

分類:[.NET 全般] 

Microsoft SQL Server ManagementStudio Express のクエリデザイナで作成した SQL 構文を、
そのまま SqlCommand クラスの CommandText に設定したのですが、実行すると構文エラーが発生してしまいます。

クエリデザイナで作成した SQL 構文を、CommandText に設定する際の注意点等を教えていただけませんでしょうか?

状況としては、SQL 構文に、"LEFT OUTER JOIN" が含まれている場合に、
[SqlException (0x80131904): キーワード 'LEFT' 付近に不適切な構文があります。]と、エラーが発生しています。

環境: ASP.NET 2.0, Microsoft VisualStudio 2005 Professional, Microsoft SQL Server 2005 Express, .NET Framework 2.0

引用返信 編集キー/
■14346 / inTopicNo.2)  Re[1]: SQL 構文についての質問
□投稿者/ オノデラ (33回)-(2008/02/15(Fri) 17:48:03)
オノデラ さんの Web サイト
 普通はそのままいけると思いますが、どのような SQL 文になったのでしょうか?
引用返信 編集キー/
■14347 / inTopicNo.3)  Re[1]: SQL 構文についての質問
□投稿者/ Mr.T (181回)-(2008/02/15(Fri) 17:50:34)
Mr.Tです、こんにちは。

> 状況としては、SQL 構文に、"LEFT OUTER JOIN" が含まれている場合に、
> [SqlException (0x80131904): キーワード 'LEFT' 付近に不適切な構文があります。]と、エラーが発生しています。

とりあえず、ステップで追って、CommandTextに渡されているSQLを確認してみるのが
よいかと思います。
どこかに文法間違いのところがあると思いますが。

あてずっぽうでは、Leftの前にスペースが入っていないとか。


引用返信 編集キー/
■14356 / inTopicNo.4)  Re[2]: SQL 構文についての質問
□投稿者/ kazu (15回)-(2008/02/15(Fri) 19:36:26)
オノデラさま、Mr.Tさま、ご回答くださりありがとうございます。


> 普通はそのままいけると思いますが、どのような SQL 文になったのでしょうか?

クエリデザイナによって自動作成された SQL 構文を CommandText に設定したところ、エラーなく実行されました。
お騒がせしてすみませんでした。

SQL 構文を作成するにあたり、外部エディタを利用し、
その外部エディタで作成したものをクエリデザイナに貼り付けて確認作業(実行)をしていたのですが、
その実行の際に、クエリデザイナによって SQL 構文が自動作成され、エラー部分(SQL 構文の不足)が補われていたようです。

クエリデザイナによって自動作成された SQL 構文が、外部エディタで作成した SQL 構文と異なるのは判っていたのですが、
AS キーワード等が補われているだけだと勝手に思い、
外部エディタで作成した SQL 構文の方を、そのまま CommandText に設定していたのが原因でした。


この度は、お騒がせして申し訳ありませんでした。今後ともご教示の程よろしくお願いいたします。

それでは。

解決済み
引用返信 編集キー/
■14369 / inTopicNo.5)  Re[3]: SQL 構文についての質問
□投稿者/ うそーん (1回)-(2008/02/16(Sat) 11:08:39)
No14356 (kazu さん) に返信

> クエリデザイナによって自動作成された SQL 構文が、外部エディタで作成した SQL 構文と異なるのは判っていたのですが、
> AS キーワード等が補われているだけだと勝手に思い、
> 外部エディタで作成した SQL 構文の方を、そのまま CommandText に設定していたのが原因でした。
>

んで具体的には何が原因?(作業の仕方とかじゃなく、構文の何が問題?)
やっぱスペース漏れ?
引用返信 編集キー/
■14383 / inTopicNo.6)  Re[4]: SQL 構文についての質問
□投稿者/ シャノン (293回)-(2008/02/16(Sat) 23:36:30)
No14369 (うそーん さん) に返信
> ■No14356 (kazu さん) に返信
>
>>クエリデザイナによって自動作成された SQL 構文が、外部エディタで作成した SQL 構文と異なるのは判っていたのですが、
>>AS キーワード等が補われているだけだと勝手に思い、
>>外部エディタで作成した SQL 構文の方を、そのまま CommandText に設定していたのが原因でした。
>>
>
> んで具体的には何が原因?(作業の仕方とかじゃなく、構文の何が問題?)
> やっぱスペース漏れ?

'OUTER' がない、とか。
引用返信 編集キー/
■14391 / inTopicNo.7)  Re[5]: SQL 構文についての質問
□投稿者/ オノデラ (34回)-(2008/02/17(Sun) 11:28:48)
オノデラ さんの Web サイト
2008/02/17(Sun) 11:29:56 編集(投稿者)

> 'OUTER' がない、とか。

 OUTER はあってもなくてもいいんじゃなかったでしたっけ?(今実行環境ないので確認できません^^)
引用返信 編集キー/
■14397 / inTopicNo.8)  Re[6]: SQL 構文についての質問
□投稿者/ 片桐 (71回)-(2008/02/17(Sun) 15:27:54)
片桐 さんの Web サイト
Left OUTER JOIN ですね。
SQL文を書き間違えていたことが原因だとはおもいますけれど、実際のSQL文が出てきてないので判らないですね。
引用返信 編集キー/
■14423 / inTopicNo.9)  Re[7]: SQL 構文についての質問
□投稿者/ kazu (16回)-(2008/02/18(Mon) 12:58:45)
うそーんさま、シャノンさま、オノデラさま、片桐さま、
引き続きのご回答ありがとうございます。


エディタで自作した SQL 構文
--------------------------------−−−−−−−−
SELECT Name, Hours
FROM (
SELECT UnitID UnitID1, Name
FROM T_Units
)
LEFT OUTER JOIN (
SELECT UnitID UnitID2, Hours
FROM T_Schedule
WHERE T_Schedule.Date >= '2008-02-14' AND T_Schedule.Date < '2008-02-15'
)
ON ID1 = ID2


上記を、クエリデザイナに貼り付け、【SQL 構文の確認】を実行すると、
「キーワード 'LEFT' 付近に不適切な構文があります。」
「キーワード 'ON' 付近に不適切な構文があります。」
の、構文エラーが確認できました。

その後、上記構文のままクエリデザイナで、【SQL の実行】を実行すると、
下記のように、SQL 構文が自動作成され、結果ペインに実行結果が出力されました。


クエリデザイナで自動作成された SQL 構文
--------------------------------−−−−−−−−
SELECT derivedtbl_1.Name, derivedtbl_2.Hours
FROM (
SELECT UnitID AS UnitID1, Name
FROM T_Units
) AS derivedtbl_1
LEFT OUTER JOIN (
SELECT UnitID AS UnitID2, Hours
FROM T_Schedule
WHERE T_Schedule.Date >= '2008-02-14' AND T_Schedule.Date < '2008-02-15'
) AS derivedtbl_2
ON derivedtbl_1.ID1 = derivedtbl_2.ID2


クエリデザイナで自動作成された SQL 構文と見比べてみましたが、
私の浅学が原因なのは明らかなようです。
ご回答およびご閲覧の皆さま、この度はお騒がせしてすみませんでした。

解決済み
引用返信 編集キー/
■14424 / inTopicNo.10)  Re[8]: SQL 構文についての質問
□投稿者/ シャノン (294回)-(2008/02/18(Mon) 13:37:15)
No14423 (kazu さん) に返信
ID1、ID2 という列が無いと思いますが…これでOKなんですか?
引用返信 編集キー/
■14428 / inTopicNo.11)  Re[9]: SQL 構文についての質問
□投稿者/ kazu (17回)-(2008/02/18(Mon) 14:54:30)
シャノンさん、ご指摘ありがとうございます。


> ID1、ID2 という列が無いと思いますが…これでOKなんですか?


エディタで自作した SQL 構文
----------------------------------------
誤)ON ID1 = ID2
正)ON UnitID1 = UnitID2


クエリデザイナで自動作成された SQL 構文
----------------------------------------
誤)ON derivedtbl_1.ID1 = derivedtbl_2.ID2
正)ON derivedtbl_1.UnitID1 = derivedtbl_2.UnitID2


記事 NO.14423 に提示した SQL 構文の、ID となっている箇所は、UnitID の誤記です。申し訳ありませんでした。
実際の SQL 構文は、列名やテーブル名がもう少し長かったりしておりまして、
多少でも見易いようにと編集した際に、修正漏れしてしまいました。

解決済み
引用返信 編集キー/
■14460 / inTopicNo.12)  Re[10]: SQL 構文についての質問
□投稿者/ ふるふる (5回)-(2008/02/19(Tue) 10:40:28)
from 句で() 付けの仮テーブルを作っているけど、その仮テーブルに対して名前をつけることを
要求されているんじゃないかな。
名前の来るところに Left というキーワードが来ている為、構文エラーになってしまっている。

クエリデザイナが勝手に付けている
AS derivedtbl_1
のように名前を付けてあげれば解決するかと。


引用返信 編集キー/
■14544 / inTopicNo.13)  Re[11]: SQL 構文についての質問
□投稿者/ kazu (18回)-(2008/02/21(Thu) 12:37:25)
ふるふるさま、ご回答ありがとうございます。
一応の解決はしていましたが、くださった助言が理解の助けになりました。

今後とも、ご教示のほどのよろしくお願いいたします。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -