如何针对以下情况编写查询,从多个表中获取结果的一部分?

时间:2014-07-28 05:38:21

标签: php jquery mysql ajax

在我的当前项目中,我有一个像facebook这样的提要菜单。我需要显示来自tbl_posts,tbl_events,tbl_shares的提要。我在滚动时使用ajax分页一次加载10个项目。因此我需要一个查询来加载来自上述三个关于滚动表的最新FEDDS ,如何确定所提取的数据是事件,发布还是分享?

Ajax滚动按以下语句完成

仅考虑tbl_post

1)首先,我将使用限制

从tbl_posts获取10个最新帖子

2)再次滚动我将获取接下来的10个项目并附加到ajax中的先前帖子。 这是通过单个查询

完成的

但是现在我有tbl_posts,tbl_events,tbl_shares。因此我没有得到如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

也许你可以创建一个至少有4列的父表tbl_feeds:id,feedtype。子表id,timeflag。如:id:1 feedtype:shares子表id:1 timeflag:2014-7-25。

在页面上显示Feed的其他信息取决于您使用的技术: 1.将事件,共享和帖子放入缓存中,在需要时动态加载它们 2.将整个feed html保存在父表的第4列中 ..........

答案 1 :(得分:1)

您可以执行三个查询,然后将结果放入每个查询的数组中。

$post_result;
$share_result;
$events_result;

然后使用数组合并合并它们;

$final_array = array_merge($post_result, $share_result);
$final_array = array_merge($final_array, $events_result);

然后您将以下内容作为最终数组:

$final_array;

您还可以在将每个查询提取到自己的数组中时,为类型添加额外的字段:

$i = 0;
while($x = $stmt->fetch())
{
   $post_result[$i] = $x;
   $post_result[$i]['type'] = "post";
   $i++;
}

注意$ i我为了额外的能力而添加的,这是明确的,能够分配和操纵当前的索引。