根据一个或另一个参数填写2D数组

时间:2016-07-29 07:32:06

标签: php arrays

我从我的数据库下载为不同公司工作的人员,我想创建具有值的关联数组" source"和"目标"代表员工工作的公司ID。从我的查询中,同一个人至少有两行,所以我知道我查询中的每个人至少可以为两家公司工作。

如果' Aberdeen资产管理公司'适用于新印度投资信托有限公司' (公司ID 300)和Aberdeen New Dawn Investment Trust PLC' (公司ID 4),我想在我的数组中有一行,如:

"source"=>300,"target"=>4,"officers"=>'Aberdeen asset management plc'

来源&目标是可互换的顺序无关紧要。如果他为两家以上的公司工作,每个员工可以添加多行。唯一的问题发生在员工为奇数公司工作但目标/来源可以设置为此人工作的先前源/目标。

数据示例: enter image description here

while($row = mysqli_fetch_array($dataDB)){
    array_push($data, array("Company_ID"=>intval($row['Company_ID']),"Company_Name"=>$row['Company_Name'],"Company_Index"=>$row['Company_Index'], "Officer_Name"=>$row['Officer_Name'], "Officer_Role"=>$row['Officer_Role']));
}
$edges = array();
foreach($data as $d){
    array_push($edges, array("source"=>$d['Company_ID']),"target"=>'',"officers"=>array($d['Officer_Name'])));
}

SQL查询已经很长时间了,因为考虑到员工仍然没有辞职,只雇用了超过1家公司的员工:

SELECT 
    CD.Company_ID,
    CD.Company_Name,
    CD.Company_Index,
    OD.Officer_Name,
    CO.Officer_Role
FROM
    Company_Details CD
INNER JOIN Company_Officer CO 
   ON CD.Company_ID = CO.Company_ID
INNER JOIN Officer_Details OD 
   ON CO.Officer_ID = OD.Officer_ID
WHERE CD.Company_Index<>'' AND 
      CO.Resigned_On='' AND
      CO.Officer_ID IN
       ( SELECT CO2.officer_id
         FROM   Company_Officer CO2
         INNER JOIN Company_Details CD2
         ON CO2.Company_ID = CD2.Company_ID
         WHERE CO2.Resigned_On='' AND CD2.Company_Index<>''
         GROUP  BY CO2.officer_id
         HAVING Count( DISTINCT CO2.company_id ) > 1 
       )
ORDER BY `OD`.`Officer_Name` ASC;

0 个答案:

没有答案