我主要有3个主要表格,分别是新闻,专辑和视频。我想创建一个facebook墙类页面,其中来自所有三个表的所有更新将按发布时间按降序排序。
是否可以在db的单个查询中进行此类调用。
我将简要解释一下我的表格
新闻有id,标题,内容,时间戳
专辑有id,title,albumdirectory,timestamp
视频有id,title,youtubelink,timestamp。
如果不可能,最好的办法是什么。
答案 0 :(得分:1)
这取决于数据的设计方式。如果使用某个共享ID全部相关,则可以进行单个连接查询以获取所有数据。如果该数据不相关,则需要进行3次单独调用。
答案 1 :(得分:1)
为此目的同时查询所有三个表格不是一个好习惯。您可以创建 Feed表。并从所需的所有其他表格中插入参考ID ,即(新闻,专辑,视频)以及该字段的日期。现在,您可以查询供稿表,并根据该表中的参考ID将加入放入其他三个表,并根据供稿表中的日期显示它们。我使用这种方法,这对我有用。
希望这有帮助。
答案 2 :(得分:0)
如果您在每个实体上想要的信息共享相同的结构(即ID,标题,时间戳),那么您可以使用UNION执行此操作
SELECT * FROM (
SELECT CONCAT('news','-',id),title,`timestamp`
FROM news
UNION
SELECT CONCAT('albums','-',id),title,`timestamp`
FROM albums
UNION
SELECT CONCAT('videos','-',id),title,`timestamp`
FROM videos
) AS all_items
ORDER BY `timestamp`
如果id字段在整个数据库中是唯一的(而不是仅在每个表中),那么你可以删除CONCAT并返回id。