我从我的数据库下载为不同公司工作的人员,我想创建具有值的关联数组" source"和"目标"代表员工工作的公司ID。从我的查询中,同一个人至少有两行,所以我知道我查询中的每个人至少可以为两家公司工作。
如果' Aberdeen资产管理公司'适用于新印度投资信托有限公司' (公司ID 300)和Aberdeen New Dawn Investment Trust PLC' (公司ID 4),我想在我的数组中有一行,如:
"source"=>300,"target"=>4,"officers"=>'Aberdeen asset management plc'
来源&目标是可互换的顺序无关紧要。如果他为两家以上的公司工作,每个员工可以添加多行。唯一的问题发生在员工为奇数公司工作但目标/来源可以设置为此人工作的先前源/目标。
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;