Du kan ikke gøre det i én forespørgsel - bedst at tage den forespørgsel, du har, og efterbehandle det resulterende svar for at få den datastruktur, du har brug for.
For at uddybe yderligere - enhver SQL-forespørgsel kan kun returnere en todimensionel række af data - en dimension for kolonnerne og en for de matchende rækker. I dit tilfælde er det, du rent faktisk leder efter, mere som et tredimensionelt bord.
Bemærk også, at på din forespørgsel som skrevet vil returnere alle news
data igen og igen for hver kommentar til hver artikel. Det er en ineffektiv brug af båndbredde og ressource fra databaseserveren.
Det er nok mere effektivt at gøre det på denne måde (i pseudo-kode):
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;
}
Den første forespørgsel henter alle nyhedsartikler og placerer dem i et array. Den anden forespørgsel henter kommentarerne og akkumulerer et separat array i hver nyhedsartikels struktur.