首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用日期排序合并两个表MySQL-PHP

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

Stack Overflow用户
提问于 2011-10-19 13:11:49
回答 1查看 903关注 0票数 0

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

代码语言:javascript
复制
    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查询:

代码语言:javascript
复制
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

代码语言:javascript
复制
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;

表微博用于存储博客帖子,page_review用于存储关于页面的评论微博是以页面为单位的。

我的要求是,我想要显示博客帖子&页面评论排序日期post_time在微博和page_review上的page_review_time。

我该怎么做呢?请帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-19 13:58:54

好了,我已经更新了我的安装裤,你可以使用你想要的联合。

只要有相同数量的字段,并且因为结果放在其他use字段下面,所以这个字段在另一个字段下面是有意义的。这个示例将把由特定用户创建的所有博客和评论(如果page_review_by_id实际上指的是用户id)与特定页面相关。

代码语言:javascript
复制
( 
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' 
) 

======== Edit==建议使用外键的模式================

因为我在您的模式中没有看到任何外键,如果我可以建议一个可选的应用外键的模式,我在下面给出一个。

此架构支持以下规则:

  • 博客属于站点而不是用户,因此没有应用on delete级联。
  • 博客是由用户创建的,并且应用了外键,因此当插入用户id时,通过外键确保一致性。
  • 页面也是如此,外键是applid而不是on delte cascade。
  • 同样适用于reviews表
  • 如果删除了用户或页面,则不会删除子行

/********Create ***** */ CREATE TABLE user ( user_id int unsigned NOT NULL AUTO_INCREMENT,username varchar(16) NOT NULL,userpassword BLOB,

主键(user_id) ) ENGINE=InnoDB默认CHARSET=latin1;

CREATE TABLE page ( page_id mediumint NOT NULL AUTO_INCREMENT,title varchar(55) NOT NULL,

主键(page_id) ) ENGINE=InnoDB默认CHARSET=latin1;

创建表microblog ( blog_id int unsigned NOT NULL AUTO_INCREMENT,blog_content text NOT NULL,

date_created datetime NOT NULL,author_id int unsigned NOT NULL,page_id mediumint NOT NULL,PRIMARY KEY (blog_id),CONSTRAINT blogfk1 FOREIGN KEY (author_id)引用user (user_id),DELETE CASCADE/ CONSTRAINT /NO blogfk2 FOREIGN KEY (page_id)引用D51 (page_id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE 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),约束外键(author_id)引用user (user_id),删除级联时/NO / CONSTRAINT reviewfk2外键(page_id)引用page (page_id) ) ENGINE=InnoDB默认CHARSET=latin1;/************** ******/

/** ***Insertions__*** **/

插入到user ( usernameuserpassword)值('username11',AES_ENCRYPT('password1','encription_key') ),('username22',AES_ENCRYPT('password2','encription_key') );

INSERT INTO page ( title)值('title1'),('title2');

插入microblog (blog_contentdate_createdauthor_idpage_id)值(‘博客内容1’,'2011-2-2 12:00','1','1'),(‘博客内容2’,'2011-2-2 12:00','2','2');

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

/*******在标识用户时查询*/ /Help / SELECT username FROM user WHERE username ='username22‘和userpassword=AES_ENCRYPT('password2','encription_key')

(选择

microblogblog_content as blog or contentmicroblogdate_createdmicroblogauthor_idmicroblog。来自D156的page_id。D157=‘1’和D159=‘1’。D160=‘1’)联合

page_reviewreview_contentpage_reviewdate_createdpage_reviewauthor_idpage_review。来自page_reviewpage_id where <代码>D170。<代码>D171=‘1’and <代码>D172。<代码>D173=‘1’)<代码>H2174<代码>F2175

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7816809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档