2012-04-12 57 views
0

我主要有3个主要表格,分别称为新闻,专辑和视频。我想创建一个脸书页面类型的页面,其中所有三个表中的所有更新将按照发布时间按降序排列。在单个查询中获取来自所有dbs的内容

是否有可能使这种调用在一个单一的查询db。

,我将简单介绍一下我的表

消息已经ID,标题,内容,时间戳记
专辑已经ID,标题,albumdirectory,时间戳
视频具有ID,标题,youtubelink,时间戳。

如果不行的话,最好的办法是什么。

回答

1

为此目的同时查询所有三张桌子将是不是一个好的做法。您可以创建一个供稿表。并插入参考ID从你想要的所有其他表(新闻,专辑,视频)日期该领域。现在,您可以查询Feed表,并根据该表中的该参考ID将其他三个表中的加入,并根据Feed表中的日期显示它们。我正在使用这种方法,这对我很有帮助。

希望这会有所帮助。

1

这取决于数据的设计方式。如果它使用某个共享ID关联,则可以进行单个联接查询以获取所有数据。如果该数据不相关,则需要拨打3个不同的电话。

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。

相关问题