All Downloads are FREE. Search and download functionalities are using the official Maven repository.

co.streamx.fluent.SQL.JoinClause Maven / Gradle / Ivy

package co.streamx.fluent.SQL;

import co.streamx.fluent.notation.Context;
import co.streamx.fluent.notation.Function;
import co.streamx.fluent.notation.ParameterContext;

public interface JoinClause extends Clause {
    /**
     * Creates an INNER JOIN
     */
    @Function(name = "INNER JOIN", omitParentheses = true, parameterContext = ParameterContext.FROM)
     JoinCondition JOIN(T tableReference);

    /**
     * Creates an INNER JOIN
     */
    @Function(name = "INNER JOIN", omitParentheses = true, argumentsDelimiter = " ON", parameterContext = ParameterContext.FROM)
    JoinClause JOIN(Object tableReference,
               @Context(ParameterContext.EXPRESSION) boolean condition);

    /**
     * Creates an INNER JOIN
     */
    @Function(name = "INNER JOIN", omitParentheses = true, parameterContext = ParameterContext.FROM)
    JoinClause JOIN(Object tableReference,
               Object... using);

    /**
     * Creates an LEFT JOIN
     */
    @Function(omitParentheses = true, parameterContext = ParameterContext.FROM)
     JoinCondition LEFT_JOIN(T tableReference);

    /**
     * Creates an RIGHT JOIN
     */
    @Function(omitParentheses = true, parameterContext = ParameterContext.FROM)
     JoinCondition RIGHT_JOIN(T tableReference);

    /**
     * Creates an FULL OUTER JOIN
     */
    @Function(name = "FULL OUTER JOIN", omitParentheses = true, parameterContext = ParameterContext.FROM)
     JoinCondition FULL_JOIN(T tableReference);

    /**
     * Creates an CROSS JOIN
     */
    @Function(omitParentheses = true, parameterContext = ParameterContext.FROM)
    JoinClause CROSS_JOIN(Object tableReference);

    /**
     * PARTITION BY extension
     */
    @Function(name = "PARTITION BY", omitParentheses = true)
    JoinClause PARTITION(By... expressions);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy