Responsável por montar instruções JOIN.

@param  string $table
@param  array $on
@param  string $type
@return void
167040
public function join(string $table, array $on, string $type = "INNER")
    {
        if (count($on) > 2) {
            throw new PhiberException("error_on_join");
        }

        try {
            switch (strtoupper($type)) {
                case "INNER":
                    return ["join" => "INNER JOIN " . $table . " ON " . $on[0] . " = " . $on[1]];
                    break;

                case "LEFT":
                    return ["join" => "LEFT JOIN " . $table . " ON " . $on[0] . " = " . $on[1]];
                    break;

                case "RIGHT":
                    return ["join" => "RIGHT JOIN " . $table . " ON " . $on[0] . " = " . $on[1]];
                    break;

                case "FULL OUTER":
                    return ["join" => "FULL OUTER JOIN " . $table . " ON " . $on[0] . " = " . $on[1]];
                    break;

                default:
                    return ["join" => "INNER JOIN " . $table . " ON " . $on[0] . " = " . $on[1]];
            }

        } catch (PhiberException $phiberException) {
            throw new PhiberException("join_no_exists");
        }
    }
1342366
public static function right(Table $table, string $alias, array $on) : Join
    {
        return new self(self::RIGHT, $table, $alias, $on);
    }
728662
public function innerJoin($table, $on) {

		$join			= new \stdClass();
		$join->table	= $table;
		$join->on		= $on;

		$this->innerJoins[] = $join;
		
		return $this;
	}
1002123
public static function left(Table $table, string $alias, array $on) : Join
    {
        return new self(self::LEFT, $table, $alias, $on);
    }
226115
public function join($type, $table, $condition)
    {
        settype($condition, 'array');

        //The table needle
        $needle = $this->_adapter->getTableNeedle();

        if (strpos($table, $needle) !== 0) {
            $table = $needle.$table;
        }

        $this->join[] = array(
            'type'      => strtoupper($type),
            'table'     => $table,
            'condition' => $condition,
        );

        return $this;
    }
1359617
public function leftJoin($table, $on, $joinField = null)
    {
        return $this->join($table, $on, $joinField, 'LEFT');
    }
20357
public function join($type, $table, $conditions=null, $recursive=true) {
		if($recursive && is_array($table)) {
			foreach($table as $_table=>$_conditions) {
				if($_conditions instanceof static)
					$this->join($type, $table, $conditions, false);
				elseif($_conditions instanceof Raw)
					$this->join($type, $table, $conditions, false);
				else
					$this->join($type, $_table, $_conditions);
			}

			return $this;
		}

		#for tables that are static or Raw
		if(is_array($table)) {
			$alias = array_keys($table)[0];
			$table = array_values($table)[0];
		}
		else {
			$table_alias = explode(' ', $table);
			$table = $table_alias[0];
			if(isset($table_alias[1]))
				$alias = $table_alias[1];
			else
				$alias = $table;
		}

		$this->joins[$alias] = [$type, $table, $conditions];

		return $this;
	}
834167
public function leftJoin($table, array $fields = [], array $on = []) {
        return $this->_addJoin(Join::LEFT, $table, $fields, $on);
    }
419974
public function join($type, $table, array $relations = array())
    {
        $this->queryBuilder->join($type, $table, $relations);
        return $this;
    }
332425
public function join($table, $on, array $columns = array())
    {
        if (!array_key_exists('joins', $this->query)) {
            $this->query['joins'] = array();
        }

        $this->query['select'] = array_merge($this->query['select'], $columns);
        $this->query['joins'][] = array($table, $on);

        return $this;
    }
142175
public void register(String table, String column, Type<?> type) {
        javaTypeMapping.setType(table, column, type);
        hasTableColumnTypes = true;
    }
320163
public function join($table, $type = null)
	{
		$this->_join[] = $this->_last_join = new \Database_Query_Builder_Join($table, $type);

		return $this;
	}
41110
private function createJoin($table, $condition, $type)
    {
        $this->join .= $type . " JOIN " . $this->prefix . $table
            . "\n\tON " . $condition . "\n";

        return $this;
    }
1189466
public function joinRaw($table, $column1, $operator, $raw, string $type = 'INNER')
	{
		return $this->join($table, $column1, $operator, $raw, $type, true);
	}
1269994
public function rightJoinOn($table, $on)
    {
        $instance = $this->joinStrategyInstance();

        $instance->joinStrategy()->rightJoinOn($table, $on);

        return $instance;
    }
287981
public function innerJoinTo($source, $table, string $on = null, string ...$params)
    {
        $this->join('INNER', $source, $table, $on, $params);

        return $this;
    }
365354
public function join($table, $on, $tablePrefix = null)
    {
        is_null($tablePrefix) && $tablePrefix = $this->tablePrefix;

        $this->table($table, $tablePrefix);
        $hasAlias = is_array($table) ? true : false;

        $tableName = $tablePrefix . ($hasAlias ? key($table) : $table);
        $this->join[count($this->table) - 1 . '_' . $tableName] = is_array($on) ? $this->parseOn($table, $on) : addslashes($on);
        return $this;
    }