- - PR -
次のようなSQL文が、何故かエラーになります。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-10-06 12:01
できました!なるほど、一つのテーブルから持ってくる場合でないと、テーブル名の省略ってできないんですか。そう考えれば納得。 さすがですね、全然思いつきませんでした。 今後同じような間違いが無いように、資料としてまとめさせていただきます。 これで解決です。皆さん、ありがとうございました。 こんなにたくさんのご回答を頂けるとは思いませんでした。 またお世話になる時がくるかもしれませんが、どうかよろしくおねがいします。 | ||||
|
投稿日時: 2003-10-06 14:01
ども、ほむらです。
理由は知らないのですが。。。 おふとぴです -------------------------- 適当なSQLのとき以外は*は使用せずフィールド名を 全て書いたほうが良いようです。。。 メンテナンス性が向上するとか。。。。。。 | ||||
|
投稿日時: 2003-10-06 14:36
Oracleの場合、内部で展開してそれぞれの列名に置換する処理をしています。この時間が稼げるので、フィールド名は省略しない方がいいです。 | ||||
|
投稿日時: 2003-10-06 16:47
ども、ほむらです。
なるほど〜、そういう理由もあるんですね。。 一回一回置換なんてしてたらもったいないですものね。 フィールド追加時やインデックス設定時のメンテナンス方面ばかりと 思い込んでました。 フォローありがとうございます。 | ||||
|
投稿日時: 2003-10-06 18:02
なんか、ひっかったので。 SELECT * FROM TABLE1, TABLE2; これは通ります。TABLE1とTABLE2の、すべての列が取得できます。「全て」という意味の「*」なので、FROMで指定したテーブルの全ての列を持ってきます。ただし、単独の「*」は、単独でしか使用できません。最初のSELECT文は単独の「*」なので、この直後に「FROM句」を期待しているのに、「,」が入っているために、エラーになったのです。 | ||||
|
投稿日時: 2003-10-07 10:27
Jittaさん、丁寧な解説をありがとうございます。
むぅ。奥が深いですねぇ。 やはりOracleの中身がどうなっているのか詳しくしらないから、無駄な処理やったり変なエラーを出したりするんですね。 勉強不足でした。ありがとうございました。精進いたします・・・。 |