sql >> Databasteknik >  >> RDS >> Mysql

Flera MySQL-tabeller till json_encode

Ok så jag har skrivit din lösning. Du måste vara säker på att beställningen av är inkluderad där eftersom det förutsätter att du beställer dem med varorna tillsammans. Jag visste inte heller hur din utgivare lagrades så jag separerade det i en separat tabell (detta gör att du sedan kan få artiklar av just utgivaren också), vilket nu är 4 joins. Också på en annan notering har jag uppdaterat den för att göra inre sammanfogningar också. På så sätt kommer du inte att få tomma resultat för konsoler som inte har några spel tilldelade. Om du vill ha dessa kan du helt enkelt ändra kopplingarna så att det också ger dig dessa resultat. Låt mig veta om detta 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. php artisan migreringsfel:nodnamn eller servnamn tillhandahålls eller vet inte

  2. När DRY-principen inte gäller:BITWISE-operationer i SQL Server

  3. Kombinera två kolumner och lägg till en ny kolumn

  4. anrop externt skript med mySQL-utlösaren WHITOUT sys_exec på ubuntu ARMHF