SQL Aliases for QQuery
Up until now, we've only described doing simple joins with QQuery, where each table is only needed for a single related record. But what about when you need to check on multiple entries in the same joined table. In standard SQL, you would join the table a second time, giving it a new name. And that's exactly how you do it in QQuery as well, using QQ::alias().
In the example 1 below, we need to find who belongs to both the ACME Website Redesign and the State College HR System projects. We do this simply by joining the membership association table twice, each time with a different alias. This allows us to create a condition that says that one associated project has an ID of 1, while a different associated project also has an ID of 2.
In a slightly more complex example 2 below, we are looking for all projects that are associated with two other projects (each is specified by name). We use the same technique with QQ::alias() as in example 1, except that we now mix it in with relationships expanded to other tables.
Example 1: Project members whose are in both project 1 and 2Kendall Public
Example 2: Projects that are related to both 'Blueman Industrial Site Architecture' and 'ACME Payment System' projectsACME Website Redesign (The redesign of the main website for ACME Incorporated)
Example 3: Managers having one least a project with a conson milestone, and for each manager, the first voyel milestone and the first conson oneJohn Doe (, Milestone F)
Mike Ho (Milestone E, Milestone D)
Karen Wolfe (Milestone A, Milestone B)
Example 4: Projects with, for each one, the "min" city from the addresses containing 'r' and the "min" city from the addresses NOT containing 'r'ACME Website Redesign (Dallas, Palo Alto)
State College HR System (Dallas, Palo Alto)
Blueman Industrial Site Architecture (Phoenix, )
ACME Payment System (Dallas, New York)