TableAlias
public class TableAlias : Hashable
A TableAlias identifies a table in a request.
-
Creates a TableAlias, suitable for qualifying requests or associations.
For example:
// The request for all books published after their author has died // // SELECT book.* // FROM book // JOIN author ON author.id = book.authorId // WHERE book.publishDate >= author.deathDate let authorAlias = TableAlias() let request = Book .joining(required: Book.author.aliased(authorAlias)) .filter(Column("publishDate") >= authorAlias[Column("deathDate")])
When the alias is given a name, this name is guaranteed to be used as the table alias in the SQL query:
// SELECT book.* // FROM book // JOIN author a ON a.id = book.authorId // WHERE book.publishDate >= a.deathDate let authorAlias = TableAlias(name: "a") let request = Book .joining(required: Book.author.aliased(authorAlias)) .filter(Column("publishDate") >= authorAlias[Column("deathDate")])
Declaration
Swift
public init(name: String? = nil)
-
Returns a qualified value that is able to resolve ambiguities in joined queries.
Declaration
Swift
public subscript(selectable: SQLSelectable) -> SQLSelection { get }
-
Returns a qualified expression that is able to resolve ambiguities in joined queries.
Declaration
Swift
public subscript(expression: SQLSpecificExpressible & SQLSelectable & SQLOrderingTerm) -> SQLExpression { get }
-
Returns a qualified ordering that is able to resolve ambiguities in joined queries.
Declaration
Swift
public subscript(ordering: SQLOrderingTerm) -> SQLOrdering { get }
-
Returns a qualified columnn that is able to resolve ambiguities in joined queries.
Declaration
Swift
public subscript(column: String) -> SQLExpression { get }
-
An expression that evaluates to true if the record refered by this
TableAlias
exists.For example, here is how filter books and only keep those that are not associated to any author:
let books: [Book] = try dbQueue.read { db in let authorAlias = TableAlias() let request = Book .joining(optional: Book.author.aliased(authorAlias)) .filter(!authorAlias.exists) return try request.fetchAll(db) }
Declaration
Swift
public var exists: SQLExpression { get }