我正在努力让员工摆脱多方面的关系。
Daisy在办公室和工作室
Dagobert在办公室
Daisy和Dagobert应出现在Impressum(AdImpressum)。
在我的关系表中,Daisy出现两次(Offie,Workshop),具有不同的 SortOrder值。(一个用于Office,一个用于Workshop)
我现在得到的是 Donald with SortOrder 1 和 Daisy with SortOrder 1
如何更改我的查询以使所有员工使用AdImpressum 1 具有独特的SortOrder值?
StaffCatObject
ID | ClassName | CatOrder | Name |
1 | StaffCatObject | 1 | OFFICE |
2 | StaffCatObject | 2 | WORKSHOP |
Staff
ID | ClassName | Name | AdImpressum |
1 | Staff | Daisy | 1 |
2 | Staff | Donald | 0 |
3 | Staff | Dagobert | 1 |
4 | Staff | Gustav | 0 |
5 | Staff | Daniel | 0 |
StaffCatObject_Staffs
ID |StaffCatObjectID | StaffID | SortOrder | Display |
1 | 1 | 1 | 1 | 1 | (=Daisy)
3 | 1 | 3 | 3 | 1 |
4 | 2 | 2 | 1 | 1 | (=Donald)
5 | 1 | 4 | 2 | 1 |
8 | 2 | 1 | 2 | 1 | (=Daisy)
….
我的职能:
public function getImpressumStaff(){
$sqlQuery = new SQLSelect();
//$sqlQuery->select = array('DISTINCT StaffID, StaffCatObject_Staffs.SortOrder, StaffCatObjectID, Display, StaffCatObject_Staffs.ID');
$sqlQuery->from = array('StaffCatObject_Staffs');
$sqlQuery->addWhere('"Display" = 1');
$sqlQuery->addLeftJoin('StaffCatObject', '"StaffCatObject"."ID" = "StaffCatObject"."ID"');
$sqlQuery->addLeftJoin('Staff', '"Staff"."ID" = "StaffCatObject_Staffs"."StaffID"');
$sqlQuery->addWhere('"AdImpressum" = 1');
$sqlQuery->setOrderBy('StaffCatObject.SortOrder');
//$sqlQuery->setOrderBy('StaffCatObject_Staffs.SortOrder');
//$sqlQuery->setGroupBy('StaffCatObject_Staffs.StaffID');
//$sqlQuery->setGroupBy('StaffCatObject_Staffs.SortOrder ASC');
$sqlQuery->setGroupBy('StaffCatObject_Staffs.StaffCatObjectID');
$result = $sqlQuery->execute();
$returnedRecords = new ArrayList();
foreach($result as $row) {
$returnedRecords->push(new ArrayData($row));
//print_r($row);
}
return $returnedRecords;
}
Thanks.Sepp。
答案 0 :(得分:0)
SortOrder
对于同一职员类别是唯一的。所以你需要添加额外的过滤器。
您的查询可以回答以下问题:
否则SortOrder
字段无关。