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

Json от две mysql таблици в PHP

Използвате изключително голям брой заявки. Защо не го направите в една заявка?

SELECT * FROM `Restaurants` `r`
    LEFT JOIN `Dishes` `d` ON (`r`.`id` = `d`.`f_id`)
ORDER BY `r`.`id` ASC 

и след това използвайте резултата за изграждане на JSON обекта.

EDIT За да улесня повторението на резултата, промених малко заявката на:

SELECT 
`r`.`id` as `restaurantId`, 
`r`.`name`, 
`r`.`info`, 
`d`.`id` AS `dishId`,
`d`.`dish`,
`d`.`description`
FROM `restaurants` `r`
    LEFT JOIN `dishes` `d` ON (`r`.`id` = `d`.`f_id`)
ORDER BY `r`.`id` ASC

резултатът ще изглежда така:restaurantId, name, info, dishId, dish, description

сега можете да итерирате резултата по следния начин:

$jsonArray = array();

foreach ($record as $dishDetails){
    // details of the restaurant
    $jsonArray[$dishDetails['f_id']]['name'] = $dishDetails['name'];
    $jsonArray[$dishDetails['f_id']]['info'] = $dishDetails['info'];

    // build the dishes of the restaurant
    $jsonArray[$dishDetails['f_id']]['dishes'][$dishDetails['dishId']]['dish'] = $dishDetails['dish']
    $jsonArray[$dishDetails['f_id']]['dishes'][$dishDetails['dishId']]['description'] = $dishDetails['description']
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да нормализирате SQL база данни

  2. Извличане на MySQL родител от най-високо ниво

  3. Най-добрият начин за запазване на заявки за търсене на потребителите в ElasticSearch?

  4. AbstractMethodError на resultset.getObject

  5. MYSQL заявка връща 'resource id#12 вместо числовата стойност, която трябва да върне