sql >> Database >  >> RDS >> Mysql

Meerdere MySQL-tabel naar json_encode

Ok, dus ik heb je oplossing opgeschreven. U moet er zeker van zijn dat de bestelling door daar is opgenomen, omdat het ervan uitgaat dat u ze samen met hun artikelen bestelt. Ik wist ook niet hoe je uitgever was opgeslagen, dus ik heb dat opgedeeld in een aparte tabel (hierdoor kun je items ook gewoon door hun uitgever krijgen), wat nu 4 joins zijn. Ook op een andere opmerking heb ik het bijgewerkt om ook inner joins te doen. Op deze manier krijg je geen lege resultaten voor consoles waaraan geen games zijn toegewezen. Als u deze wilt, kunt u eenvoudig de joins wijzigen, zodat u ook die resultaten krijgt. Laat me weten of dit helpt

//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. Hoe maak je een veilige mysql voorbereide verklaring in php?

  2. Hoe een gegevenstabel invoegen in de SQL Server-databasetabel?

  3. PostgreSQL-afstemmingsinterval tussen start- en eindtijd tegen tijdstempel

  4. 12c Kolom automatisch invullen met reekswaarde