如何在一个查询中选择所有新闻条目和所有评论

时间:2014-01-12 02:08:14

标签: php mysql mysqli

回复问题* Fetch all news and all comments

你真的认为这是最好的方式吗?

我还需要获取当前用户的所有新闻[authorId] => 99 示例

$news = array(
[0] = array(
[id]=>1,[authorId]=>99,[data]=>"Lorem Ipsum"
),
[1] = array(
[id]=>2,[authorId]=>99,[data]=>"Lorem Ipsum"
)
);

并获取此用户的所有评论 示例

$comments = array(
[0] = array(
[comId]=>1,[newsid]=>1,[authorId]=>99,[data]=>"bla bla bla bla"
),
[1] = array(
[comId]=>2,[newsid]=>1,[authorId]=>99,[data]=>"bla bla"
)
);

其他表用户

$users = array(
[0] = array(
[userId]=>99,
[userName]=>"User99"
)
);

之后

select * from news n left join users u on n.authorId = u.userId where n.authorId = 99

进入此选择推送选择获取评论

array(
    [0] => array(
        [id] => 1 // news' id
        [userId] => 99,
        [data]=>"Lorem Ipsum",
        [comments] => array(
            [0] => arra(
                [comId] => 1 // comment's id
                [userId] => 99
                [data]=>"bla bla"
            ),
            ...
        )
    ),
    ...
)

问题***(上)

  

第一个查询获取所有新闻文章并将它们放入数组中。第二个查询获取注释,并在每个新闻文章的结构中累积一个单独的数组。

但是如果这个查询和foreach两个数组同时运行10000次 例 10000刷新页面?

1 个答案:

答案 0 :(得分:0)

您必须使用逻辑缓存

1)如果您获得许多记录并限制考虑分页查询结果

2)不同安排中每张表的单独信息

$user = array();

$comments = array();

3)使用foreach和array_merge

组合两个数组
$merge = array();
$i=0;
foreach ($comments as $row) {
   extract($row);
   if(in_array($iduser, $user)):
     $merge[$i] = $comments + $user;
   endif;
$i++;
}

这是一个没有尝试过的伪代码也许应该做一些调整。我希望你能发球