HOME»応用情報技術者試験掲示板»平成27年春期午後問6
投稿する
qiita.com/k_0120/items/a27ea1fc3b9bddc77fa1
@k_0120(株式会社エイチームライフデザイン)
SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話
まあ、そうなれば、別に大丈夫ってのがわかると思います。
平成27年春期午後問6 [3537]
aさん(No.1)
https://www.ap-siken.com/kakomon/27_haru/pm06.html
〔非営業日利用一覧表示機能の実装〕のSQL文において
-----
SELECT AC.*
FROM アクセスログ AC
-----
とFROMの所でACという別名をつける前にSELECT文でACという別名を使っていますがこのようなことは実際に可能なのでしょうか?また、
-----
SELECT *
FROM アクセスログ AC
-----
と書くのではだめなのでしょうか?
ご返答よろしくお願いします。
〔非営業日利用一覧表示機能の実装〕のSQL文において
-----
SELECT AC.*
FROM アクセスログ AC
-----
とFROMの所でACという別名をつける前にSELECT文でACという別名を使っていますがこのようなことは実際に可能なのでしょうか?また、
-----
SELECT *
FROM アクセスログ AC
-----
と書くのではだめなのでしょうか?
ご返答よろしくお願いします。
2022.08.09 13:48
GinSanaさん(No.2)
★AP プラチナマイスター
どっちもできます。AC.は別名というよりテーブル修飾というんですが
DBの構文解釈で、実際に読まれるときは
AC.カラム名 AS カラム名
として補完されるので、カラム名が一意である(他のテーブルとかと結合して、同じカラムの名前があって、どのテーブルのカラムなのかがわからないとか、がない)場合はAC.の部分はなくても大丈夫、ってことです。
DBの構文解釈で、実際に読まれるときは
AC.カラム名 AS カラム名
として補完されるので、カラム名が一意である(他のテーブルとかと結合して、同じカラムの名前があって、どのテーブルのカラムなのかがわからないとか、がない)場合はAC.の部分はなくても大丈夫、ってことです。
2022.08.09 14:23
GinSanaさん(No.3)
★AP プラチナマイスター
>FROMの所でACという別名をつける前にSELECT文でACという別名を使っています
qiita.com/k_0120/items/a27ea1fc3b9bddc77fa1
@k_0120(株式会社エイチームライフデザイン)
SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話
データベースは下記順序でSQLを実行していきます。
フロム句
↓
ジョイン句
↓
ウェアー句
↓
グループバイ句
↓
ハビング句
↓
セレクト句
↓
オーダーバイ句
↓
リミット句
フロム句
↓
ジョイン句
↓
ウェアー句
↓
グループバイ句
↓
ハビング句
↓
セレクト句
↓
オーダーバイ句
↓
リミット句
まあ、そうなれば、別に大丈夫ってのがわかると思います。
2022.08.09 14:28
GinSanaさん(No.4)
★AP プラチナマイスター
この投稿は投稿者により削除されました。(2022.08.09 14:40)
2022.08.09 14:40
GinSanaさん(No.5)
★AP プラチナマイスター
動作はsqlite3で検証しました
SQLite version 3.38.5 2022-05-06 15:25:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> with temp as (select 2 as hoge) select ac.* from temp ac;
2
sqlite> with temp as (select 2 as hoge) select * from temp ac;
2
sqlite>
SQLite version 3.38.5 2022-05-06 15:25:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> with temp as (select 2 as hoge) select ac.* from temp ac;
2
sqlite> with temp as (select 2 as hoge) select * from temp ac;
2
sqlite>
2022.08.09 14:40
aさん(No.6)
わかりやすい説明ありがとうございます。
SELECTよりも後にFROMが書かれていたとしても処理としてはFROMから先に行うということですね!
SELECTよりも後にFROMが書かれていたとしても処理としてはFROMから先に行うということですね!
2022.08.09 14:57