我主要有3个主要表格,分别称为新闻,专辑和视频。我想创建一个脸书页面类型的页面,其中所有三个表中的所有更新将按照发布时间按降序排列。在单个查询中获取来自所有dbs的内容
是否有可能使这种调用在一个单一的查询db。
,我将简单介绍一下我的表
消息已经ID,标题,内容,时间戳记
专辑已经ID,标题,albumdirectory,时间戳
视频具有ID,标题,youtubelink,时间戳。
如果不行的话,最好的办法是什么。
我主要有3个主要表格,分别称为新闻,专辑和视频。我想创建一个脸书页面类型的页面,其中所有三个表中的所有更新将按照发布时间按降序排列。在单个查询中获取来自所有dbs的内容
是否有可能使这种调用在一个单一的查询db。
,我将简单介绍一下我的表
消息已经ID,标题,内容,时间戳记
专辑已经ID,标题,albumdirectory,时间戳
视频具有ID,标题,youtubelink,时间戳。
如果不行的话,最好的办法是什么。
为此目的同时查询所有三张桌子将是不是一个好的做法。您可以创建一个供稿表。并插入参考ID从你想要的所有其他表(新闻,专辑,视频)和日期该领域。现在,您可以查询Feed表,并根据该表中的该参考ID将其他三个表中的加入,并根据Feed表中的日期显示它们。我正在使用这种方法,这对我很有帮助。
希望这会有所帮助。
这取决于数据的设计方式。如果它使用某个共享ID关联,则可以进行单个联接查询以获取所有数据。如果该数据不相关,则需要拨打3个不同的电话。
如果你想在每一个实体的信息共享相同的结构(即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。