Skip to content

join

Join clauses for queries.

CrossJoin

Bases: JoinClause

CROSS JOIN clause.

Source code in src/embar/query/join.py
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
class CrossJoin(JoinClause):
    """
    CROSS JOIN clause.
    """

    table: type[Table]

    def __init__(self, table: type[Table]):
        """
        Create a new CrossJoin instance.
        """
        self.table = table

    @override
    def get(self, get_count: GetCount) -> QuerySingle:
        """
        Generate the CROSS JOIN SQL.
        """
        sql = f"CROSS JOIN {self.table.fqn()}"
        return QuerySingle(sql=sql)

__init__(table)

Create a new CrossJoin instance.

Source code in src/embar/query/join.py
135
136
137
138
139
def __init__(self, table: type[Table]):
    """
    Create a new CrossJoin instance.
    """
    self.table = table

get(get_count)

Generate the CROSS JOIN SQL.

Source code in src/embar/query/join.py
141
142
143
144
145
146
147
@override
def get(self, get_count: GetCount) -> QuerySingle:
    """
    Generate the CROSS JOIN SQL.
    """
    sql = f"CROSS JOIN {self.table.fqn()}"
    return QuerySingle(sql=sql)

FullJoin

Bases: JoinClause

FULL OUTER JOIN clause.

Source code in src/embar/query/join.py
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
class FullJoin(JoinClause):
    """
    FULL OUTER JOIN clause.
    """

    table: type[Table]
    on: WhereClause

    def __init__(self, table: type[Table], on: WhereClause):
        """
        Create a new FullJoin instance.
        """
        self.table = table
        self.on = on

    @override
    def get(self, get_count: GetCount) -> QuerySingle:
        """
        Generate the FULL OUTER JOIN SQL.
        """
        on = self.on.sql(get_count)

        sql = f"FULL OUTER JOIN {self.table.fqn()} ON {on.sql}"
        return QuerySingle(sql=sql, params=on.params)

__init__(table, on)

Create a new FullJoin instance.

Source code in src/embar/query/join.py
110
111
112
113
114
115
def __init__(self, table: type[Table], on: WhereClause):
    """
    Create a new FullJoin instance.
    """
    self.table = table
    self.on = on

get(get_count)

Generate the FULL OUTER JOIN SQL.

Source code in src/embar/query/join.py
117
118
119
120
121
122
123
124
125
@override
def get(self, get_count: GetCount) -> QuerySingle:
    """
    Generate the FULL OUTER JOIN SQL.
    """
    on = self.on.sql(get_count)

    sql = f"FULL OUTER JOIN {self.table.fqn()} ON {on.sql}"
    return QuerySingle(sql=sql, params=on.params)

InnerJoin

Bases: JoinClause

INNER JOIN clause.

Source code in src/embar/query/join.py
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
class InnerJoin(JoinClause):
    """
    INNER JOIN clause.
    """

    table: type[Table]
    on: WhereClause

    def __init__(self, table: type[Table], on: WhereClause):
        """
        Create a new InnerJoin instance.
        """
        self.table = table
        self.on = on

    @override
    def get(self, get_count: GetCount) -> QuerySingle:
        """
        Generate the INNER JOIN SQL.
        """
        on = self.on.sql(get_count)

        sql = f"INNER JOIN {self.table.fqn()} ON {on.sql}"
        return QuerySingle(sql=sql, params=on.params)

__init__(table, on)

Create a new InnerJoin instance.

Source code in src/embar/query/join.py
84
85
86
87
88
89
def __init__(self, table: type[Table], on: WhereClause):
    """
    Create a new InnerJoin instance.
    """
    self.table = table
    self.on = on

get(get_count)

Generate the INNER JOIN SQL.

Source code in src/embar/query/join.py
91
92
93
94
95
96
97
98
99
@override
def get(self, get_count: GetCount) -> QuerySingle:
    """
    Generate the INNER JOIN SQL.
    """
    on = self.on.sql(get_count)

    sql = f"INNER JOIN {self.table.fqn()} ON {on.sql}"
    return QuerySingle(sql=sql, params=on.params)

JoinClause

Bases: ABC

Base class for all join clauses.

Source code in src/embar/query/join.py
11
12
13
14
15
16
17
18
19
20
21
class JoinClause(ABC):
    """
    Base class for all join clauses.
    """

    @abstractmethod
    def get(self, get_count: GetCount) -> QuerySingle:
        """
        Generate the SQL for this join clause.
        """
        ...

get(get_count) abstractmethod

Generate the SQL for this join clause.

Source code in src/embar/query/join.py
16
17
18
19
20
21
@abstractmethod
def get(self, get_count: GetCount) -> QuerySingle:
    """
    Generate the SQL for this join clause.
    """
    ...

LeftJoin

Bases: JoinClause

LEFT JOIN clause.

Source code in src/embar/query/join.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class LeftJoin(JoinClause):
    """
    LEFT JOIN clause.
    """

    table: type[Table]
    on: WhereClause

    def __init__(self, table: type[Table], on: WhereClause):
        """
        Create a new LeftJoin instance.
        """
        self.table = table
        self.on = on

    @override
    def get(self, get_count: GetCount) -> QuerySingle:
        """
        Generate the LEFT JOIN SQL.
        """
        on = self.on.sql(get_count)

        sql = f"LEFT JOIN {self.table.fqn()} ON {on.sql}"
        return QuerySingle(sql=sql, params=on.params)

__init__(table, on)

Create a new LeftJoin instance.

Source code in src/embar/query/join.py
32
33
34
35
36
37
def __init__(self, table: type[Table], on: WhereClause):
    """
    Create a new LeftJoin instance.
    """
    self.table = table
    self.on = on

get(get_count)

Generate the LEFT JOIN SQL.

Source code in src/embar/query/join.py
39
40
41
42
43
44
45
46
47
@override
def get(self, get_count: GetCount) -> QuerySingle:
    """
    Generate the LEFT JOIN SQL.
    """
    on = self.on.sql(get_count)

    sql = f"LEFT JOIN {self.table.fqn()} ON {on.sql}"
    return QuerySingle(sql=sql, params=on.params)

RightJoin

Bases: JoinClause

RIGHT JOIN clause.

Source code in src/embar/query/join.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class RightJoin(JoinClause):
    """
    RIGHT JOIN clause.
    """

    table: type[Table]
    on: WhereClause

    def __init__(self, table: type[Table], on: WhereClause):
        """
        Create a new RightJoin instance.
        """
        self.table = table
        self.on = on

    @override
    def get(self, get_count: GetCount) -> QuerySingle:
        """
        Generate the RIGHT JOIN SQL.
        """
        on = self.on.sql(get_count)

        sql = f"RIGHT JOIN {self.table.fqn()} ON {on.sql}"
        return QuerySingle(sql=sql, params=on.params)

__init__(table, on)

Create a new RightJoin instance.

Source code in src/embar/query/join.py
58
59
60
61
62
63
def __init__(self, table: type[Table], on: WhereClause):
    """
    Create a new RightJoin instance.
    """
    self.table = table
    self.on = on

get(get_count)

Generate the RIGHT JOIN SQL.

Source code in src/embar/query/join.py
65
66
67
68
69
70
71
72
73
@override
def get(self, get_count: GetCount) -> QuerySingle:
    """
    Generate the RIGHT JOIN SQL.
    """
    on = self.on.sql(get_count)

    sql = f"RIGHT JOIN {self.table.fqn()} ON {on.sql}"
    return QuerySingle(sql=sql, params=on.params)