我主要有 3 个主要表格,称为新闻、专辑和视频。我想创建一个 facebook 墙类型的页面,其中所有三个表的所有更新都将按发布时间降序排列。
是否可以在对 db.xml 的单个查询中进行这种调用。
我将简要解释一下我的表格
新闻有 id、标题、内容、时间戳
专辑有 id、标题、相册目录、时间戳
视频有 id、标题、youtubelink、时间戳。
如果不可能,最好的方法是什么。
这取决于数据的设计方式。如果使用某个共享 ID 全部相关,则可以进行单个连接查询以获取所有数据。如果该数据不相关,您将需要进行 3 次单独调用。
为此目的同时查询所有三个表不是一个好习惯。您可以创建一个提要表。并从您想要的所有其他表中插入参考 ID ,即(新闻、专辑、视频)以及该字段的日期。现在您可以查询提要表,并根据该表中的引用 id连接到其他三个表,并根据提要表中的日期显示它们。我正在使用这种方法,这对我很有用。
希望这可以帮助。
如果您想要的每个实体的信息共享相同的结构(即 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。