Para obter a estrutura desejada, você precisa executar duas instruções SQL - uma para obter todas as palavras e outra para obter todos os parágrafos.
$result_w = $conn->query("SELECT * FROM words;");
$results_w = $result->fetch_all(MYSQLI_ASSOC);
$result_p = $conn->query("SELECT * FROM paragraphs;");
$results_p = $result->fetch_all(MYSQLI_ASSOC);
$paragraphs = [];
foreach($results_p as $key => $row) {
$paragraphs[$row['id']] = $row;
}
$data = [];
foreach($results_w as $key => $row) {
$p_no = $row['paragraph_no'];
$data[$p_no]['words'] = $results_w;
$data[$p_no]['paragraph'] = $paragraphs[$p_no];
}
É sua saída para
$data
agora o que você precisa?