Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP/mySQL - comment récupérer des lignes imbriquées dans un tableau multidimensionnel

La requête devrait ressembler à ceci :

SELECT * FROM scales
INNER JOIN items ON scales.id = items.scale_id

Si vous souhaitez effectuer une itération avec des boucles imbriquées, vous devrez extraire ces données dans un tableau - en espérant que vous ne reculez pas trop au point de consommer trop de mémoire.

$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;
}

Ensuite, vous pouvez parcourir :

foreach ($scales as $scale)
{
    foreach ($scale['items'] as $item)
        ; //... do stuff
}

Remarque :c'est un peu naïf dans la mesure où $scale et $item contiendront tous les deux des champs des DEUX tables... si c'est un problème, vous devez modifier les affectations dans la boucle ci-dessus pour extraire uniquement les champs que vous voulez.