0

我主要有 3 个主要表格,称为新闻、专辑和视频。我想创建一个 facebook 墙类型的页面,其中所有三个表的所有更新都将按发布时间降序排列。

是否可以在对 db.xml 的单个查询中进行这种调用。

我将简要解释一下我的表格

新闻有 id、标题、内容、时间戳
专辑有 id、标题、相册目录、时间戳
视频有 id、标题、youtubelink、时间戳。

如果不可能,最好的方法是什么。

4

3 回答 3

1

这取决于数据的设计方式。如果使用某个共享 ID 全部相关,则可以进行单个连接查询以获取所有数据。如果该数据不相关,您将需要进行 3 次单独调用。

于 2012-04-12T05:43:43.373 回答
1

为此目的同时查询所有三个表不是一个好习惯。您可以创建一个提要表。并从您想要的所有其他表中插入参考 ID ,即(新闻、专辑、视频)以及该字段的日期。现在您可以查询提要表,并根据该表中的引用 id连接到其他三个表,并根据提要表中的日期显示它们。我正在使用这种方法,这对我很有用。

希望这可以帮助。

于 2012-04-12T06:36:17.593 回答
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。

于 2012-04-12T06:37:28.320 回答