- PR -

次のようなSQL文が、何故かエラーになります。

投稿者投稿内容
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-10-06 12:01
引用:

ぴでさんの書き込み (2003-10-06 11:54) より:
SELECT [別名].*, 'TEXT1' AS TEXTBOX1
FROM SchemaName.TableName [別名] WHERE (ID = 1)
ですかね〜

[ メッセージ編集済み 編集者: ぴで 編集日時 2003-10-06 11:56 ]



できました!なるほど、一つのテーブルから持ってくる場合でないと、テーブル名の省略ってできないんですか。そう考えれば納得。

さすがですね、全然思いつきませんでした。
今後同じような間違いが無いように、資料としてまとめさせていただきます。

これで解決です。皆さん、ありがとうございました。
こんなにたくさんのご回答を頂けるとは思いませんでした。
またお世話になる時がくるかもしれませんが、どうかよろしくおねがいします。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-06 14:01
ども、ほむらです。
理由は知らないのですが。。。
おふとぴです
--------------------------
適当なSQLのとき以外は*は使用せずフィールド名を
全て書いたほうが良いようです。。。
メンテナンス性が向上するとか。。。。。。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-06 14:36
引用:

ほむらさんの書き込み (2003-10-06 14:01) より:

適当なSQLのとき以外は*は使用せずフィールド名を
全て書いたほうが良いようです。。。
メンテナンス性が向上するとか。。。。。。


 Oracleの場合、内部で展開してそれぞれの列名に置換する処理をしています。この時間が稼げるので、フィールド名は省略しない方がいいです。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-06 16:47
ども、ほむらです。
引用:

Oracleの場合、内部で展開してそれぞれの列名に置換する処理をしています。
この時間が稼げるので、フィールド名は省略しない方がいいです。


なるほど〜、そういう理由もあるんですね。。
一回一回置換なんてしてたらもったいないですものね。
フィールド追加時やインデックス設定時のメンテナンス方面ばかりと
思い込んでました。

フォローありがとうございます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-06 18:02
引用:

カレー落武者さんの書き込み (2003-10-06 12:01) より:

できました!なるほど、一つのテーブルから持ってくる場合でないと、テーブル名の省略ってできないんですか。そう考えれば納得。


 なんか、ひっかったので。

SELECT * FROM TABLE1, TABLE2;

これは通ります。TABLE1とTABLE2の、すべての列が取得できます。「全て」という意味の「*」なので、FROMで指定したテーブルの全ての列を持ってきます。ただし、単独の「*」は、単独でしか使用できません。最初のSELECT文は単独の「*」なので、この直後に「FROM句」を期待しているのに、「,」が入っているために、エラーになったのです。
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-10-07 10:27
Jittaさん、丁寧な解説をありがとうございます。
むぅ。奥が深いですねぇ。
やはりOracleの中身がどうなっているのか詳しくしらないから、無駄な処理やったり変なエラーを出したりするんですね。
勉強不足でした。ありがとうございました。精進いたします・・・。

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