Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP/mySQL - как да извлечете вложени редове в многоизмерен масив

Заявката трябва да изглежда така:

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

Ако искате да повторите с вложени цикли, ще трябва да изтеглите тези данни в масив – да се надяваме, че не изтегляте назад толкова много, че да изяде твърде много памет.

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

След това можете да преминете през:

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

Забележка:това е малко наивно, тъй като $scale и $item ще съдържат полета от ДВЕТЕ таблици... ако това е проблем, тогава трябва да промените присвояването в цикъла по-горе, за да извадите само полетата, които искате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate + MySQL:Как да настроите кодирането utf-8 за база данни и таблици

  2. Какво е ПРОСТРАНСТВЕН ИНДЕКС и кога трябва да го използвам?

  3. Използване на 'OR' между клаузата HAVING и WHERE в MySQL?

  4. Вмъкване и задаване на стойност с max()+1 проблеми

  5. mysql_fetch_array пропуска първия ред