13 const std::string& alias) {
19 const std::string& alias) {
25 const std::string& alias) {
31 const std::string& alias) {
51 std::ostringstream oss;
52 for (
size_t i = 0; i <
joins_.size(); ++i) {
67 oss <<
" ON " <<
join.condition;
Builds JOIN clauses for SQL queries.
join_builder & add(const join_spec &spec)
Add a join with explicit type.
std::vector< join_spec > joins_
join_builder & right_join(const std::string &table, const std::string &condition, const std::string &alias="")
Add a RIGHT JOIN.
join_builder & join(const std::string &table, const std::string &condition, const std::string &alias="")
Add an INNER JOIN.
bool empty() const
Check if builder is empty.
join_builder & full_outer_join(const std::string &table, const std::string &condition, const std::string &alias="")
Add a FULL OUTER JOIN.
std::string build(const value_formatter &formatter) const
Build the JOIN clauses.
join_builder & left_join(const std::string &table, const std::string &condition, const std::string &alias="")
Add a LEFT JOIN.
size_t size() const
Get number of joins.
std::string join_type_to_string(join_type type) const
void clear()
Clear all joins.
join_builder & cross_join(const std::string &table, const std::string &alias="")
Add a CROSS JOIN.
join_type
Types of SQL joins.
@ full_outer
FULL OUTER JOIN.
Represents a single WHERE condition.
Specification for a single JOIN clause.