ビューを介してクエリを実行するときにSQLiteでフィールド名の完全修飾を無効にする方法が見つかりません。sqliteはビュー内のフィールド名を完全に修飾しています
sqlite> create table mtcars (id int, mpg real, cyl int, vs int);
sqlite> insert into mtcars values (1, 21.0, 6, 0);
sqlite> insert into mtcars values (2, 22.8, 4, 1);
sqlite> insert into mtcars values (1, 21.4, 6, 1);
sqlite> .headers on
"ノーマル" テーブルへのアクセス、無ビュー:
sqlite> select * from mtcars foo;
id|mpg|cyl|vs
1|21.0|6|0
2|22.8|4|1
1|21.4|6|1
sqlite> select foo.* from mtcars foo;
id|mpg|cyl|vs
1|21.0|6|0
2|22.8|4|1
1|21.4|6|1
sqlite> select foo.mpg,foo.cyl from mtcars foo;
mpg|cyl
21.0|6
22.8|4
21.4|6
セットアップを(...テーブルの命名は、他の試験からの症状である、mtcars
を笑うしないでください)今までのすべての正常。ビューを作成して使用する:
sqlite> create view vwmtcars as select mpg,cyl from mtcars;
sqlite> select * from vwmtcars foo;
mpg|cyl
21.0|6
22.8|4
21.4|6
sqlite> select foo.* from vwmtcars foo;
mpg|cyl
21.0|6
22.8|4
21.4|6
まだ正常です。しかし:
sqlite> select foo.mpg,foo.cyl from vwmtcars foo;
foo.mpg|foo.cyl
21.0|6
22.8|4
21.4|6
私はmpg|cyl
、ないfoo.mpg|foo.cyl
を期待していました。
つの質問:
- なぜフィールド名が完全な修飾されていますか?
- これを無効にすることはできますか?
(Win10 x64の、sqlite3の3.14.2(Gitの-ため、Windowsの2.11.1)に含まれる)
はい、これは私が気づいた1つの回避策です。もっと頑強な回避策ではないにしても「理由」を見つけたので、私は答えを書いています。返信ありがとう! – r2evans
この動作のようなものが流出しているようです:http://sqlite.1065341.n5.nabble.com/Aliasing-and-columns-names-td14489.html – gregory
2008年の「流入」、スロー・ディスコース:-)そのような他の議論は、私は同様の行動を見ているようだ。おそらく、私は、常に明示的な「ベストプラクティス」を再確認しているだけです。再度、感謝します! – r2evans