Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP/mySQL - como buscar linhas aninhadas em array multidimensional


A consulta deve ficar mais ou menos assim:
SELECT * FROM scales
INNER JOIN items ON scales.id = items.scale_id

Se você quiser iterar com loops aninhados, precisará puxar esses dados para um array - espero que você não esteja puxando tanto que consumirá muita memória.
$scales = array();

while ($row = mysql_fetch_assoc($data))
{
    if (!isset($scales[$row['scale_id']]))
    {
        $row['items'] = array();
        $scales[$row['scale_id']] = $row;
    }

    $scales[$row['scale_id']]['items'][] = $row;
}

Então você pode percorrer:
foreach ($scales as $scale)
{
    foreach ($scale['items'] as $item)
        ; //... do stuff
}

Nota:isso é um pouco ingênuo, pois $scale e $item conterão campos de ambas as tabelas... se isso for um problema, você precisará alterar as atribuições no loop acima para extrair apenas os campos desejados.