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

Łączenie wyników z dwóch tabel w JSON

Czy ten kod daje dane wyjściowe, których potrzebujesz?

$result_w = $conn->query("SELECT * FROM words;");
$results_w = $result_w->fetch_all(MYSQLI_ASSOC);

$words_per_paragraph = [];
foreach($results_w as $key => $row) {
    $words_per_paragraph[$row['paragraph_no']][] = $row;
}

$result_p = $conn->query("SELECT * FROM paragraph;");
$results_p = $result_p->fetch_all(MYSQLI_ASSOC);

$data = [];
foreach($results_p as $key => $row) {
    $p_no = $row['paragraph_no'];
    $words = [];
    if(array_key_exists($p_no, $words_per_paragraph)) {
        $words = $words_per_paragraph[$p_no];
    }
    $data[$p_no] = [
        'words' => $words,
        'paragraph' => $row
    ];
}

Zawartość $data (Nie dodałem żadnych słów do akapitu 2 w celach testowych):

{
   "1":{
      "words":{
         "id":"4",
         "book_no":"1",
         "paragraph_no":"1",
         "word_no":"4",
         "word":"you"
      },
      "paragraph":{
         "id":"1",
         "book_no":"1",
         "paragraph_no":"1",
         "paragraph":"hello how are you"
      }
   },
   "2":{
      "words":[

      ],
      "paragraph":{
         "id":"3",
         "book_no":"1",
         "paragraph_no":"2",
         "paragraph":"I'm fine and you?"
      }
   }
}

Może możesz zmienić strukturę tabeli bazy danych, aby uzyskać wszystko w jednej instrukcji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj minimalny identyfikator i maksymalną wartość identyfikatora w php MySQL

  2. Mysql:Jak mogę użyć RTRIM w moim zapytaniu LOAD DATA INFILE?

  3. MySQL:Błąd usuwania bazy danych (errno 13; errno 17; errno 39)

  4. mariadb Regexp czasami zwraca pusty w procedurze składowanej

  5. Zresetuj hasło roota MySQL