--- !ruby/object:RI::MethodDescription 
aliases: []

block_params: (table_name, last_alias, @opts[:join] || [])
comment: 
- !ruby/struct:SM::Flow::P 
  body: "Returns a joined dataset. Uses the following arguments:"
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: type - The type of join to do (:inner, :left_outer, :right_outer, :full)
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: "table - Depends on type:"
  - !ruby/object:SM::Flow::LIST 
    contents: 
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: Dataset - a subselect is performed with an alias of tN for some value of N
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: Model (or anything responding to :table_name) - table.table_name
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: "String, Symbol: table"
    type: :BULLET
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: "expr - specifies conditions, depends on type:"
  - !ruby/object:SM::Flow::LIST 
    contents: 
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: Hash, Array with all two pairs - Assumes key (1st arg) is column of joined table (unless already qualified), and value (2nd arg) is column of the last joined or primary table (or the :implicit_qualifier option). To specify multiple conditions on a single joined table column, you must use an array. Uses a JOIN with an ON clause.
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: Array - If all members of the array are symbols, considers them as columns and uses a JOIN with a USING clause. Most databases will remove duplicate columns from the result set if this is used.
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: nil - If a block is not given, doesn't use ON or USING, so the JOIN should be a NATURAL or CROSS join. If a block is given, uses a ON clause based on the block, see below.
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: Everything else - pretty much the same as a using the argument in a call to filter, so strings are considered literal, symbols specify boolean columns, and blockless filter expressions can be used. Uses a JOIN with an ON clause.
    type: :BULLET
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: "options - a hash of options, with any of the following keys:"
  - !ruby/object:SM::Flow::LIST 
    contents: 
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: ":table_alias - the name of the table's alias when joining, necessary for joining to the same table more than once. No alias is used by default."
    - !ruby/struct:SM::Flow::LI 
      label: "*"
      body: ":implicit_qualifer - The name to use for qualifying implicit conditions. By default, the last joined or primary table is used."
    type: :BULLET
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: block - The block argument should only be given if a JOIN with an ON clause is used, in which case it yields the table alias/name for the table currently being joined, the table alias/name for the last joined (or first table), and an array of previous SQL::JoinClause.
  type: :BULLET
full_name: Sequel::Dataset#join_table
is_singleton: false
name: join_table
params: (type, table, expr=nil, options={}, &block) {|table_name, last_alias, @opts[:join] || []| ...}
visibility: public
