Не можете да направите това с една заявка – най-добре е да вземете заявката, която имате, и да обработите последващо получения отговор, за да получите структурата от данни, от която се нуждаете.
За да уточним по-подробно - всяка SQL заявка може да върне само двуизмерен масив от данни - едно измерение за колоните и едно за съвпадащите редове. Във вашия случай това, което всъщност търсите, е по-скоро като триизмерна таблица.
Обърнете внимание също, че на вашата заявка, както е написано, ще върне всички news
данни отново и отново за всеки коментар срещу всяка статия. Това е неефективно използване на честотната лента и ресурса от сървъра на базата данни.
Вероятно е по-ефективно да го направите по този начин (в псевдокод):
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;
}
Първата заявка получава всички новинарски статии и ги поставя в масив. Втората заявка получава коментарите и натрупва отделен масив в структурата на всяка новинарска статия.