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

Flere MySQL-tabel til json_encode

Ok så jeg har skrevet din løsning. Du skal være sikker på, at ordren er inkluderet der, fordi det forudsætter, at du bestiller dem med de varer sammen. Jeg vidste heller ikke, hvordan din udgiver blev gemt, så jeg adskilte det i en separat tabel (dette vil give dig mulighed for derefter at få elementer fra netop udgiveren), som nu er 4 joins. Også på en anden note har jeg opdateret den til også at lave indre sammenføjninger. På denne måde får du ikke tomme resultater for konsoller, der ikke har nogen spil tildelt. Hvis du vil have disse, kan du blot ændre sammenføjningerne, så det også vil give dig disse resultater. Lad mig vide, hvis dette hjælper

//get all of the information
$query = '
    SELECT c.consoleId,c.consoleName,m.modelId,m.modelName,g.gameId,g.gameName,p.publisherId,p.publisherName
    FROM `consoleconsole` c
        INNER JOIN `consolemodel` m ON c.consoleId=m.consoleId
        INNER JOIN `consolegame` g ON m.modelId=g.modelId
        INNER JOIN `consolepublisher` p ON g.publisherId = p.publisherId
    ORDER BY c.consoleName, m.modelName, g.gameName
';

//get the results
$result = mysql_query($query);

//setup array to hold information
$consoles = array();

//setup holders for the different types so that we can filter out the data
$consoleId = 0;
$modelId = 0;

//setup to hold our current index
$consoleIndex = -1;
$modelIndex = -1;

//go through the rows
while($row = mysql_fetch_assoc($result)){
    if($consoleId != $row['consoleId']){
        $consoleIndex++;
        $modelIndex = -1;
        $consoleId = $row['consoleId'];

        //add the console
        $consoles[$consoleIndex]['console'] = $row['consoleName'];

        //setup the information array
        $consoles[$consoleIndex]['information'] = array();
    }

    if($modelId != $row['modelId']){
        $modelIndex++;
        $modelId = $row['modelId'];

        //add the model to the console
        $consoles[$consoleIndex]['information'][$modelIndex]['model'] = $row['modelName'];

        //setup the title array
        $consoles[$consoleIndex]['information'][$modelIndex]['title'] = array();
    }

    //add the game to the current console and model
    $consoles[$consoleIndex]['information'][$modelIndex]['title'][] = array(
        'game'      => $row['gameName'],
        'publisher' => $row['publisherName']
    );
}

echo json_encode($consoles);


  1. Ny bruger og LDAP-styring i ClusterControl 1.8.2

  2. Spar tid ved at køre Microsoft Access-rapporter ved hjælp af filtre i layoutvisning

  3. Flere indre sammenføjninger med flere borde

  4. Sådan opretter du array i PostgreSQL