Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele tabel MySQL do json_encode

Ok, więc napisałem twoje rozwiązanie. Musisz mieć pewność, że zamówienie według jest tam zawarte, ponieważ zakłada, że ​​zamawiasz je razem z tymi elementami. Nie wiedziałem również, jak przechowywany jest twój wydawca, więc wydzieliłem to do osobnej tabeli (pozwoli ci to uzyskać również elementy od samego wydawcy), która jest teraz 4 sprzężeniami. Również w innej notatce zaktualizowałem go, aby robił również połączenia wewnętrzne. W ten sposób nie otrzymasz pustych wyników dla konsol, do których nie są przypisane żadne gry. Jeśli chcesz to zrobić, możesz po prostu zmienić złączenia, aby dało to również te wyniki. Daj mi znać, jeśli to pomoż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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podpowiedzieć indeks do użycia w kwerendzie wybierającej MySQL?

  2. Zdalne połączenie MySQL nie powiodło się z nieznaną metodą uwierzytelniania

  3. SQLSTATE[HY000] [1040] Za dużo połączeń

  4. Zweryfikuj logowanie za pomocą hasła Bcrypt

  5. Konwersja numeru epoki na datę czytelną dla człowieka w mysql