Mysql
 sql >> база данни >  >> RDS >> Mysql

Комбиниране на резултати от две таблици в JSON

Този код произвежда ли изхода, от който се нуждаете?

$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
    ];
}

Съдържание на $data (Не съм добавил никакви думи към параграф 2 за целите на тестването):

{
   "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?"
      }
   }
}

Може би можете да промените структурата на таблицата на вашата база данни, за да получите всичко в един израз.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да запиша данни за сесията на PHP в база данни вместо във файловата система?

  2. Как да криптирам тази парола с MD5 с помощта на PHP?

  3. Актуализирайте ред, но вмъкнете, ако редът не съществува в codeigniter

  4. Обработка на латентност в MySQL транзакции

  5. Как да конвертирам този подготвителен израз за използване на заместители в Wordpress $wpdb?