sql >> Base de Datos >  >> RDS >> Mysql

PHP/mySQL:cómo obtener filas anidadas en una matriz multidimensional

La consulta debería verse así:

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

Si desea iterar con bucles anidados, deberá extraer estos datos en una matriz; con suerte, no está retrocediendo tanto como para consumir demasiada memoria.

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

Luego puede recorrer:

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

Nota:esto es algo ingenuo ya que $escala y $elemento contendrán campos de AMBAS tablas... si eso es un problema, entonces debe cambiar las asignaciones en el ciclo anterior para extraer solo los campos que desea.