Qcodo Query Clauses
All
Qcodo Query method calls take in an optional set of
QQ Clauses.
QQ Clauses allow you
alter the result set by performing the equivalents of most of your major SQL clauses, including JOIN, ORDER BY,
GROUP BY and DISTINCT.
The following is the list of QQ Clause classes and what parameters they take:
- QQ::OrderBy(array/list of QQNodes)
- QQ::GroupBy(array/list of QQNodes)
- QQ::Count(QQNode, string)
- QQ::Minimum(QQNode, string)
- QQ::Maximum(QQNode, string)
- QQ::Average(QQNode, string)
- QQ::Expand(QQNode)
- QQ::ExpandAsArray(QQNode for an Association Table)
- QQ::LimitInfo(integer[, integer = 0])
- QQ::Distinct()
OrderBy and
GroupBy follow the conventions of SQL ORDER BY and GROUP BY. It takes in a
list of one or more
QQ Column Nodes. This list could be a parameterized list and/or an array.
Specifically for
OrderBy, to specify a
QQ Node that you wish to order by in descending
order, add a "false" after the QQ Node. So for example,
QQ::OrderBy(QQN::Person()->LastName, false,
QQN::Person()->FirstName) will do the SQL equivalent of "ORDER BY last_name DESC, first_name ASC".
Count,
Minimum,
Maximum and
Average are aggregation-related clauses, and
only work when
GroupBy is specified. These methods take in an attribute name, which
can then be restored using
GetVirtualAttribute() on the object.
Expand and
ExapndAsArray deals with Object Expansion / Early Binding. More on this
can be seen in the "Early Binding of Related Objects" example.
LimitInfo will limit the result set. The first integer is the maximum number of rows
you wish to limit the query to. The
optional second integer is the offset (if any).
And finally,
Distinct will cause the query to be called with SELECT DISTINCT.
All clauses must be wrapped around a single
QQ::Clause() call, which takes in any
number of clause classes for your query.
Select all People, Ordered by Last Name then First Name
tester 1234
34 34
jj a
nikos aliagas
sadf asdf
a b
Linda Broy
Brett Carlisl
234 edwe
John Forbes
Bill Gates
Miguel Ho
hello how r u
jhjh jkj
Steve Jobs
Samanthahg Jonesssssssss
alma korte
Kendall ghjh Nix11
Jacob Pratt
qq qqqqq
Ben Robinson
Adam Sandler
sdf sdfs
fghfghWendy Smith
vadalmafa Smith 2asdf
JenniferJ Smiths
Deni Sorotnik
manish tripathi
fernando valiente !
fgdfg Wolfe
Select all People, Ordered by Last Name then First Name, Limited to the first 4 results
tester 1234
34 34
jj a
nikos aliagas
Select all Projects and the Count of Team Members (if applicable)
ACME Website Redesign (6 team members)
State College HR Systems (4 team members)
Blueman Industrial Site Architecture2 (4 team members)
ACME Systems I (3 team members)