Php 如何为以下情况编写查询,从多个表中获取部分结果?

Php 如何为以下情况编写查询,从多个表中获取部分结果?,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,在我当前的项目中,我有一个类似facebook的feeds菜单。我需要显示来自tbl_posts、tbl_events、tbl_shares的feeds。我在滚动时使用ajax分页一次加载10个项目。因此,我需要一个查询从滚动时提到的三个表中加载最新的FEDD,如何确定获取的数据是event、post还是share Ajax滚动按以下语句进行 只考虑tbl_post 1首先,我将使用limit从tbl_帖子中获取10篇最新帖子 2再次滚动时,我将获取接下来的10个项目,并将其附加到ajax中以前

在我当前的项目中,我有一个类似facebook的feeds菜单。我需要显示来自tbl_posts、tbl_events、tbl_shares的feeds。我在滚动时使用ajax分页一次加载10个项目。因此,我需要一个查询从滚动时提到的三个表中加载最新的FEDD,如何确定获取的数据是event、post还是share

Ajax滚动按以下语句进行

只考虑tbl_post

1首先,我将使用limit从tbl_帖子中获取10篇最新帖子

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


但是现在我有tbl_帖子、tbl_事件、tbl_共享。因此,我不知道如何解决这个问题?

也许您可以创建至少4列的父表tbl_提要:id、提要类型。子表id,时间间隔。例如:id:1 feedtype:shares子表id:1时间间隔:2014-7-25

在页面上显示提要的其他信息取决于您使用的技术: 1.将事件、共享和发布放在缓存中,在需要时动态加载它们 2.在父表的第4列保存整个提要html
您可以执行三个查询,然后将结果放入每个查询的数组中

$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,因为它具有额外的功能,可以清晰地分配和操作当前索引。

您需要10个最新的项目,它们是三个表的混合体?是的,这三个表中只有10个最新的项目,我需要确定该项目是post、share或events。仅供最终澄清,在三个表上执行三个查询,然后将三个数组合并为一个数组,然后使用该数组。现在您的问题是,您不知道合并数组中的一个项是post还是share?如果我一次从三个表中获取所有行,并且afetr合并可以将该项标识为事件,则您认为不正确,共享或发布。如果我一次从三个表中获取所有行,并且afetr合并可以将项目标识为事件、共享或发布,则u建议的“否”是正确的。这里的问题是,我首先只获取10个最新的项目,向下滚动时,我将获取接下来的10个项目,直到行的末尾。此过程将继续。考虑到七月我有8个职位,2014年6月有5个股票,2014个月有20个活动。现在,你将如何获取最新的10个项目这是正确的,我将接受作为答案。但我有一个小疑问如下。如果100万用户正在使用我的网站,他们都在忙着发布,共享和创建事件。在这种情况下,我需要插入父表。我认为该表在几秒钟内将有越来越多的负载,对吗?@Paramesh Reddy,解决您的问题:为每个用户使用内存缓存,redis,mongodb。。。一切都好。假设有一个用户A,您可以将A的提要存储在一个文档/密钥中,可以非常快速地访问它。然后,使用消息队列或其他技术将数据持久化到数据库中。好的,谢谢您的解决方案。如果我一次从三个表中获取所有行,并且afetr合并可以将该项标识为事件、共享或发布,那么您建议的否是正确的。这里的问题是,我首先只获取10个最新的项目,向下滚动时,我将获取接下来的10个项目,直到行的末尾。此过程将继续。考虑到七月我有8个职位,2014年6月有5个股票,2014个月有20个活动。现在您将如何获取最新的10个项目SAN:在前10个项目->8篇文章+2份共享接下来的10个项目->3份共享+7个事件接下来的10个项目->10个事件和接下来的3个事件