Dzięki za podpowiedzi. Zrobiłem tak aby było wszystko przejrzyste. Moje zapytanie wygląda teraz tak i kod php:
<?php
$sqldep = "SELECT d.*, c.*, w.* FROM pb_depart d
INNER JOIN pb_celldep c on c.id_depart = d.did
INNER JOIN pb_workers w on w.id_celldep = c.cid
WHERE c.id_depart = '$iddep' $csql $dssql ORDER BY w.nazwisko";
$res = dbquery($sqldep);
while ($r = dbarray($res))
{
$did = $r['did'];
$cid = $r['cid'];
if (!isset($listar[$did])) $listar[$did] = array('name' => $r['name'], 'did' => $r['did'],'idept' => $r['iddept'], 'corder' => $r['order'], 'dshow' => $r['show'], 'wydzial' => array());
if (!empty($r['namecell'])) $listar[$did]['wydzial'][$cid] = array('namecell' => $r['namecell'], 'cid' => $r['cid'], 'idwysw'=>$r['idwysw'], 'position'=> $r['position'], 'osoby'=> array());
if (!empty($r['nazwisko'])) $listar[$did]['wydzial'][$cid]['osoby'][] = array('nazwisko' => $r['nazwisko']); }
?>
Zapytanie działa poprawnie jednak nie potrafię rozbić tego dobrze. Zastosowałem obsługę nospora, do tworzenia tablicy.
W chwili obecnej wygląd to tak:
Kod
[26] => Array
(
[name] => Biuro Rachunkowe
[did] => 26
[idept] => BF
[corder] => 1
[dshow] => 0
[wydzial] => Array
(
[190] => Array
(
[namecell] => Kasa
[cid] => 190
[idwysw] => BAF IV
[position] => 0
[osoby] => Array
(
[0] => Array
(
[nazwisko] => Dobosz
)
)
)
)
)
Wszystko ładnie niby działa, jednak dla tablicy osoby występuje więcej nazwisk a wywala mi jedną. Nie wiem czy robię to w dobrej formie, ale inaczej tego nie widzę.