Решение "одного запроса", которое я искал, кажется, не существует, или, если оно существует, оно будет намного медленнее, чем простая сортировка в php.
Итак, я выполнил 3 отдельных запроса, поместил каждый из них в массивы, а затем, чтобы поместить их все в окончательный массив с нужной мне иерархией, я сделал следующие циклы, чтобы увидеть, существует ли параметрID для всех уровней иерархия. Если этого не произошло, я помещаю его в массив.
$finalArray = array();
foreach ($companyArray as $purchaseID => $companyData) {
if (empty($deptArray[$purchaseID]) && empty($userArray[$purchaseID])) {
$finalArray[] = $companyData;
}
}
foreach ($deptArray as $purchaseID => $deptData) {
if (empty($userArray[$purchaseID])) {
$finalArray[] = $deptData;
}
}
foreach ($userArray as $purchaseID => $userData) {
$finalArray[] = $userData;
}
Затем я могу отсортировать этот массив так, как я хочу, и перебрать его, чтобы отобразить то, что мне нужно.
Не уверен, что это лучший способ, но он работал хорошо и молниеносно для меня.