我的应用程序有一个类似Facebook的流,显示各种类型的更新。因此它将显示常规帖子(来自“帖子”表)和事件(来自“事件”表)表等。
问题是我不知道如何从不同的表中获取这些记录,因为它们具有不同的列。我应该多次查询数据库然后用PHP组织数据吗?如果是这样,怎么样?我不确定如何处理这个问题。
非常感谢您的帮助:)
答案 0 :(得分:0)
理想情况下,您只需使用JOIN在一个查询中从多个表中获取数据。但是,如果不了解有关表格模式的更多信息,则很难提供任何有用的细节。 (除非你从一开始就考虑到这一点,否则很可能是不可能的。)
因此,您可能还希望创建一个通用的“元”表,以通用格式为每个帖子/事件提供信息,并提供链接到相关表的方法。 (即:它将包含“父”类型和ID。)然后,您可以使用此元表作为“更新”流的源,并根据需要深入查看适当的内容。
答案 1 :(得分:0)
除非事件和帖子彼此相关,否则您可能会单独查询它们,即使它们显示在同一页面上。
你不会只是为了它而想要使用JOIN。只有存在外键关系。如果您不知道那是什么,那么您没有。
答案 2 :(得分:0)
如果数据表彼此相关,您通常可以使用JOIN和UNION的某种组合在单个查询中获取数据。但是,为了获得更好的答案,您必须发布数据表的结构以及网站所需的(组合)记录样本。
答案 3 :(得分:0)
如果您不知道列,则可以获取表元数据并找出列所代表的内容及其相应的数据类型。
如果您知道哪些列,则可以从多个表中进行选择,甚至可以使用嵌套的选择或连接来获取数据。
答案 4 :(得分:-1)
在user_id上加入表格,即
Select * from posts p
left join status_updates su on p.user_id = su.user_id
limit 25;
或者如果您的表格差异太大,那么先使用临时表格
create table tmp_updates
(
select user_id, p.id as update_id, 'post' as update_type, p.text from posts;
);
insert into table tmp_updates
(
select user_id, su.id as update_id, 'status' as update_type, su.text from status_updates;
);
Select * from tmp_updates
where user_id = '...'
limit 25;