Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ambil semua berita dan semua komentar

Anda tidak dapat melakukannya dalam satu kueri - sebaiknya ambil kueri yang Anda miliki dan pascaproses jawaban yang dihasilkan untuk mendapatkan struktur data yang Anda butuhkan.

Untuk menguraikan lebih lanjut - kueri SQL apa pun hanya dapat mengembalikan larik data dua dimensi - satu dimensi untuk kolom, dan satu untuk baris yang cocok. Dalam kasus Anda, apa yang sebenarnya Anda cari lebih seperti tabel tiga dimensi.

Perhatikan juga bahwa pada permintaan Anda seperti yang tertulis akan mengembalikan semua news data berulang-ulang untuk setiap komentar terhadap setiap artikel. Itu adalah penggunaan bandwidth dan sumber daya yang tidak efisien dari server database.

Mungkin lebih efisien untuk melakukannya seperti ini (dalam pseudo-code):

SELECT * FROM news
...
foreach ($rows as $row) {
  $row['comments] = array();
  $news[$row['id']] = $row;
}

SELECT * FROM comments
...
foreach ($rows as $row) {
  $news[$row['news_id']]['comments'][] = $row;
}

Kueri pertama mendapatkan semua artikel berita dan menempatkannya dalam array. Kueri kedua mendapatkan komentar, dan mengakumulasikan larik terpisah dalam setiap struktur artikel berita.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kesalahan:perintah 'x86_64-linux-gnu-gcc' saat menginstal mysqlclient

  2. Apakah MySQL mendukung tanggal historis (seperti 1200)?

  3. Mengapa kueri dieksekusi dari meja kerja mysql membutuhkan waktu lebih lama daripada mengeksekusinya langsung dari cli mysql?

  4. Masukan pengguna yang sangat sederhana di Django

  5. Kesalahan MySQL:Penggunaan UPDATE dan LIMIT yang salah