Method: Sequel::Dataset#from_self

Defined in:
lib/sequel/dataset/query.rb

#from_self(opts = OPTS) ⇒ Object

Returns a dataset selecting from the current dataset. Options:

:alias

Controls the alias of the table

:column_aliases

Also aliases columns, using derived column lists. Only used in conjunction with :alias.

ds = DB[:items].order(:name).select(:id, :name)
# SELECT id,name FROM items ORDER BY name

ds.from_self
# SELECT * FROM (SELECT id, name FROM items ORDER BY name) AS t1

ds.from_self(alias: :foo)
# SELECT * FROM (SELECT id, name FROM items ORDER BY name) AS foo

ds.from_self(alias: :foo, column_aliases: [:c1, :c2])
# SELECT * FROM (SELECT id, name FROM items ORDER BY name) AS foo(c1, c2)


294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/sequel/dataset/query.rb', line 294

def from_self(opts=OPTS)
  fs = {}
  @opts.keys.each{|k| fs[k] = nil unless non_sql_option?(k)}
  pr = proc do
    c = clone(fs).from(opts[:alias] ? as(opts[:alias], opts[:column_aliases]) : self)
    if cols = _columns
      c.send(:columns=, cols)
    end
    c
  end

  opts.empty? ? cached_dataset(:_from_self_ds, &pr) : pr.call
end