sql >> Database teknologi >  >> RDS >> Mysql

Json fra to mysql-tabeller i PHP

Du bruger et ekstremt stort antal forespørgsler. Hvorfor ikke gøre det i en enkelt forespørgsel?

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

og brug derefter resultatet til at bygge JSON-objektet.

EDIT For at gøre det nemmere at gentage resultatet ændrede jeg forespørgslen lidt til:

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

resultatet vil se sådan ud:restaurantId, name, info, dishId, dish, description

du kan nu gentage resultatet sådan her:

$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. Meget langsomme (1 sekund) forbindelser

  2. Flere en til mange relationer i GORM

  3. T-SQL-fejl, faldgruber og bedste praksis – vinduesfunktioner

  4. Oracle select returnerer ikke alle kolonner under sqlplus