如何使用快捷语法 select schema/table/column in Sequel?
How to select schema/table/column in Sequel using the shortcut syntax?
在Sequel中,可以用:a__b
生成SQL,例如"a"."b"
。但是当我们想要一个完全限定的语句到达一个列时,这种语法不起作用,例如:
> Sequel.version
=> "4.25.0"
> puts RDB[:store__albums].select(:store__albums__title___album_title).sql
SELECT "store"."albums__title" AS "album_title" FROM "store"."albums"
# I expected:
# SELECT "store"."albums"."title" AS "album_title" FROM "albums"."title"
我知道我可以使用 Sequel.lit
来生成正确的值,但我希望流畅的语法能够支持这一点。 Sequel 开箱即用吗?
我正在使用 PostgreSQL 驱动程序。
你很接近。我认为。 :-)
RDB[:store__albums].select(:title___album_title)
应该给你以下 SQL:
SELECT "title" AS "album_title" FROM "store"."albums"
这不能接受吗?
根据 Jeremy Evans 的说法,Sequel 不支持 fluent syntax to 3 levels deep。
相反,解决方案是使用较低级别的方法:
puts RDB[:store__albums].
select(Sequel.qualify(:store, :albums__title).
as(:album_title)).sql
在Sequel中,可以用:a__b
生成SQL,例如"a"."b"
。但是当我们想要一个完全限定的语句到达一个列时,这种语法不起作用,例如:
> Sequel.version
=> "4.25.0"
> puts RDB[:store__albums].select(:store__albums__title___album_title).sql
SELECT "store"."albums__title" AS "album_title" FROM "store"."albums"
# I expected:
# SELECT "store"."albums"."title" AS "album_title" FROM "albums"."title"
我知道我可以使用 Sequel.lit
来生成正确的值,但我希望流畅的语法能够支持这一点。 Sequel 开箱即用吗?
我正在使用 PostgreSQL 驱动程序。
你很接近。我认为。 :-)
RDB[:store__albums].select(:title___album_title)
应该给你以下 SQL:
SELECT "title" AS "album_title" FROM "store"."albums"
这不能接受吗?
根据 Jeremy Evans 的说法,Sequel 不支持 fluent syntax to 3 levels deep。
相反,解决方案是使用较低级别的方法:
puts RDB[:store__albums].
select(Sequel.qualify(:store, :albums__title).
as(:album_title)).sql