sql >> Databáze >  >> RDS >> Mysql

Více tabulek MySQL na json_encode

Dobře, tak jsem napsal vaše řešení. Musíte si být jisti, že je tam zahrnuta objednávka do, protože předpokládá, že je objednáváte s položkami společně. Také jsem nevěděl, jak byl váš vydavatel uložen, takže jsem to rozdělil do samostatné tabulky (to vám umožní získat položky i od tohoto vydavatele), což je nyní 4 spojení. Také na další poznámku jsem jej aktualizoval, aby také prováděl vnitřní spojení. Tímto způsobem nezískáte prázdné výsledky pro konzole, které nemají přiřazeny žádné hry. Pokud je chcete, můžete jednoduše změnit spojení tak, aby vám to poskytlo také tyto výsledky. Dejte mi vědět, jestli to pomůže

//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. Jak mohu získat počet záznamů ovlivněných uloženou procedurou?

  2. Jak najít položku seznamu na zadané pozici v MySQL

  3. Kde je soubor MySQL 5.7 my.cnf?

  4. Vytvořte databázi MySQL z Javy