php - 来自 2 个相关表的时间表

标签 php sql mysql

假设我有一个screenshots 表和一个replies 表。所以:每个屏幕截图都可以有多个回复(一对多)。现在,我想创建两者的组合时间线,但实际上,它们(在结构上)非常不相关。

如何从两个表中选择数据,按发布时间降序排列;例如,我可以发布一个帖子,发表一些评论,然后再发布另一个帖子;因为那将是时间表发生的方式?

通常从两个组合表中选择;但我不希望这种情况发生。在那个主题上,我还需要这些表是可区分的。这是表的结构...

--
-- Table structure for table `screenshots`
--

CREATE TABLE IF NOT EXISTS `screenshots` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `description` text NOT NULL,
  `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `ext` varchar(4) NOT NULL default 'png',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

-- --------------------------------------------------------

--
-- Table structure for table `screenshot_replies`
--

CREATE TABLE IF NOT EXISTS `screenshot_replies` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `parent` int(11) NOT NULL,
  `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `text` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

注意:我意识到这可能与 this question 重复但我没有找到适合我的解决方案。

提前致谢! :)

最佳答案

你应该使用 UNION在这种情况下:

(SELECT id, time, 'screenshots' as tableName FROM screenshots)
UNION
(SELECT id, time, 'replies' as tableName FROM screenshot_replies)
ORDER BY time ASC

您可以使用 mysql_tablename 获取字段的表名PHP 函数
您可以将表名指定为结果集中的列

关于php - 来自 2 个相关表的时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386255/

相关文章:

php - 使用 php 对 foreach 循环内的日期进行排序

php - 如何查看 PHP cURL 请求正文(如 header 的 CURLINFO_HEADER_OUT)

php - 重定向后 session 变量消失

mysql - 为什么我的 MySQL 索引基数被清零了?

php - 获取所有帖子并发布用户喜欢的 MySQL

php - mysql 查询中出现未知列错误

sql - super 键、候选键和主键

MySQL 触发器 - 将 SELECT 存储在变量中

mysql - 查询是否可以改进,因为它会出现超时异常

mysql - 使用连接函数为字段设置默认值