| 169 | } |
| 170 | |
| 171 | pub fn build(self) -> RawQuery<L> { |
| 172 | let where_clause = self |
| 173 | .where_expr |
| 174 | .map(|e| format!(" WHERE {}", format_expr(&e))) |
| 175 | .unwrap_or_default(); |
| 176 | |
| 177 | let sql = format!( |
| 178 | r#"SELECT "{}".* FROM "{}" JOIN "{}" ON "{}"."{}" = "{}"."{}"{}"#, |
| 179 | self.left_col.table_name(), |
| 180 | self.left_col.table_name(), |
| 181 | self.right_table, |
| 182 | self.left_col.table_name(), |
| 183 | self.left_col.column_name(), |
| 184 | self.right_table, |
| 185 | self.right_col, |
| 186 | where_clause |
| 187 | ); |
| 188 | RawQuery::new(sql) |
| 189 | } |
| 190 | } |
| 191 | |
| 192 | // RightSemiJoin where() operates on R |