public function testHaving() { $objItems = Project::QueryArray(QQ::All(), QQ::Clause(QQ::GroupBy(QQN::Project()->Id), QQ::Count(QQN::Project()->PersonAsTeamMember->PersonId, 'team_member_count'), QQ::Having(QQ::SubSql('COUNT({1}) > 5', QQN::Project()->PersonAsTeamMember->PersonId)), QQ::OrderBy(QQN::Project()->Id))); $this->assertEqual(sizeof($objItems), 2, "2 projects found"); $this->assertEqual($objItems[0]->Name, "State College HR System", "Project " . $objItems[0]->Name . " found"); $this->assertEqual($objItems[0]->GetVirtualAttribute('team_member_count'), 6, "6 team members found for project " . $objItems[0]->Name); }
_p('<li>' . $objPerson->FirstName . ' ' . $objPerson->LastName . '</li>', false); } ?> </ul> <h2>Select all Projects and the Count of Team Members (if applicable)</h2> <p><em>GROUP BY in action</em></p> <ul> <?php $objProjectArray = Project::QueryArray(QQ::All(), QQ::Clause(QQ::GroupBy(QQN::Project()->Id), QQ::Count(QQN::Project()->PersonAsTeamMember->PersonId, 'team_member_count'))); foreach ($objProjectArray as $objProject) { _p('<li>' . $objProject->Name . ' (' . $objProject->GetVirtualAttribute('team_member_count') . ' team members)' . '</li>', false); } ?> </ul> <h2>Select all Projects with more than 5 team members. </h2> <p><em>Using a Having clause to further limit group functions</em></p> <ul> <?php $objProjectArray = Project::QueryArray(QQ::All(), QQ::Clause(QQ::GroupBy(QQN::Project()->Id), QQ::Count(QQN::Project()->PersonAsTeamMember->PersonId, 'team_member_count'), QQ::Having(QQ::SubSql('COUNT({1}) > 5', QQN::Project()->PersonAsTeamMember->PersonId)))); foreach ($objProjectArray as $objProject) { _p($objProject->Name . ' (' . $objProject->GetVirtualAttribute('team_member_count') . ' team members)'); _p('<br/>', false); } ?> </ul> </div> <?php require '../includes/footer.inc.php';