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.