php - 如何用日期排序合并两个表MySQL-PHP

标签 php mysql sorting union

我想将两个表的结果合并为一个。
请参考下表:

    Data from microblog table as Row array
    Array ( [ID] => 46 [userID] => 1 [userNAME] => user [blog_content] => HAI DEAR [page_name] => honda [page_ID] => 31 [post_time] => 2011-10-18 11:06:54 )
 Data from Page_review table as Row array
    Array ( [page_review_id] => 5 [page_id] => 31 [page_review_by_id] => 31 [page_review_by_username] => user [page_review_time] => 2011-10-18 11:43:34 [page_review_content] => hai ) 


表微博MySQL查询:

DROP TABLE IF EXISTS `featurezme_store`.`microblog`;
CREATE TABLE  `featurezme_store`.`microblog` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userID` int(10) unsigned NOT NULL,
  `userNAME` varchar(45) NOT NULL,
  `blog_content` text NOT NULL,
  `page_name` varchar(45) NOT NULL,
  `page_ID` int(10) unsigned NOT NULL,
  `post_time` datetime NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=latin1;


表page_review

DROP TABLE IF EXISTS `featurezme_store`.`page_review`;
CREATE TABLE  `featurezme_store`.`page_review` (
  `page_review_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `page_id` int(10) unsigned NOT NULL,
  `page_review_by_id` int(10) unsigned NOT NULL,
  `page_review_by_username` varchar(145) NOT NULL,
  `page_review_time` datetime NOT NULL,
  `page_review_content` varchar(555) NOT NULL,
  PRIMARY KEY (`page_review_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;


表Microblog用于存储博客文章,page_review用于存储有关页面的评论[Microblog在页面中]。

我的要求是,我要显示按日期[微博中的post_time和page_review上的page_review_time]排序的Blogpost和页面评论。

我怎样才能做到这一点 ?请帮我。

最佳答案

好的,我已经更新了answear,您可以根据需要使用union。

只是具有相同数量的字段,并且因为结果放置在一个与另一个使用字段不相同的位置,所以有意义的是在另一个字段之下。此示例将带入由特定用户创建的所有博客和评论(如果page_review_by_id实际上是指用户ID)并与特定页面相关。

( 
SELECT  
`microblog`.`userID`, 
`microblog`.`blog_content` as `blog or review`, 
`microblog`.`post_time`, 
`microblog`.`page_id` 
from `microblog`
where `microblog`.`page_id`='1' and `microblog`.`userID`='1' 
)
union
( 
SELECT  
`page_review`.`page_review_by_id`, 
`page_review`.`page_review_content`, 
`page_review`.`page_review_time`, 
`page_review`.`page_id`
from `page_review`
where `page_review`.`page_id`='1' and `page_review`.`page_review_by_id`='1' 
) 


========编辑==使用外键建议架构================

因为如果我可以建议可选地应用外键的模式,那么在您的模式中看不到任何外键,因此我在下面介绍了一个外键。

这些规则受此架构支持:


博客属于站点而不属于用户,因此没有应用删除级联。
博客是由用户创建的,并应用了外键,因此当插入用户ID时,可以通过外键确保一致性。
页面也是如此,外键不带增量级联就被应用。
评论表也是如此
如果删除用户或页面,则不会删除任何子行

/********创建 ***** ***/
创建表user
  user_id int unsigned NOT NULL AUTO_INCREMENT,
  username varchar(16)NOT NULL,
  userpassword BLOB,
  主键(user_id
)ENGINE = InnoDB DEFAULT CHARSET = latin1;

创建表page
  page_id mediumint unsigned NOT NULL AUTO_INCREMENT,
  title varchar(55)NOT NULL,
  主键(page_id
)ENGINE = InnoDB DEFAULT CHARSET = latin1;

创建表microblog
  blog_id int unsigned NOT NULL AUTO_INCREMENT,
  blog_content文字NOT NULL,
  date_created datetime NOT NULL,
  author_id int unsigned NOT NULL,
  page_id mediumint unsigned NOT NULL,
  主键(blog_id),
    约束blogfk1外键(author_id
        参考useruser_id),
        /不能删除级联/
    约束blogfk2外键(page_id
        参考pagepage_id
)ENGINE = InnoDB DEFAULT CHARSET = latin1;

创建表page_review
  review_id int unsigned NOT NULL AUTO_INCREMENT,
  review_content varchar(555)NOT NULL,
  date_created datetime NOT NULL,
  author_id int unsigned NOT NULL,
  page_id mediumint unsigned NOT NULL,
  主键(review_id),
    约束reviewfk1外键(author_id
        参考useruser_id),
        /不能删除级联/
    约束reviewfk2外键(page_id
        参考pagepage_id
)ENGINE = InnoDB DEFAULT CHARSET = latin1;
/ ************** ****** /

/ ** ***插入*** ** /
插入userusernameuserpassword
VALUES('username11',AES_ENCRYPT('password1',
'encription_key')),
 ('username22',AES_ENCRYPT('password2',
'encription_key'));

插入pagetitle)值
('title1'),('title2');

插入microblogblog_contentdate_created
author_idpage_id)值
('blogcontent1','2011-2-2 12:00','1','1'),
('blogcontent2','2011-2-2 12:00','2','2');

插入page_reviewreview_content
date_createdauthor_idpage_id)值
('reviewcontent1','2011-2-2 12:00','1','1'),
('reviewcontent2','2011-2-2 12:00','2','2');
/ ***** ******* /

/ *******查询*** /
/帮助识别用户/
选择username
user哪里username ='username22'
userpassword = AES_ENCRYPT('password2','encription_key')


选择
microblogblog_content作为blog or content
microblogdate_created
microblogauthor_id
microblogpage_id
来自microblog
其中microblogauthor_id ='1'和microblogpage_id ='1'

联盟

选择
page_reviewreview_content
page_reviewdate_created
page_reviewauthor_id
page_reviewpage_id
来自page_review
其中page_reviewauthor_id ='1'和page_reviewpage_id ='1'

关于php - 如何用日期排序合并两个表MySQL-PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816809/

相关文章:

PHP MySQL : Data is getting reset to 0's when trying to edit

php - Silverstripe 页面模板保存到数据库问题

php - 自动递增的唯一字符串 ID

c# - 使用 DataBind() 后无法对 GridView 进行排序

angular - 默认显示排序图标 - ngx-datatable-column

PHP echo字段,字段出现在div之前

php - 如果用户具有 softdelete 属性,Laravel 5.1 Auth::attempt() 不工作

PHP MySQL 如果关系表中的键不存在则插入

mysql - COUNT UNION 太多

c++ - 给定条件如何维持发生顺序