我想将两个表的结果合并为一个。
请参考下表:
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
)参考
user
(user_id
),/不能删除级联/
约束
blogfk2
外键(page_id
)参考
page
(page_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
)参考
user
(user_id
),/不能删除级联/
约束
reviewfk2
外键(page_id
)参考
page
(page_id
))ENGINE = InnoDB DEFAULT CHARSET = latin1;
/ ************** ****** /
/ ** ***插入*** ** /
插入
user
(username
,userpassword
)VALUES('username11',AES_ENCRYPT('password1',
'encription_key')),
('username22',AES_ENCRYPT('password2',
'encription_key'));
插入
page
(title
)值('title1'),('title2');
插入
microblog
(blog_content
,date_created
,author_id
,page_id
)值('blogcontent1','2011-2-2 12:00','1','1'),
('blogcontent2','2011-2-2 12:00','2','2');
插入
page_review
(review_content
,date_created
,author_id
,page_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')(
选择
microblog
。blog_content
作为blog or content
,microblog
。date_created
,microblog
。author_id
,microblog
。page_id
来自
microblog
其中
microblog
。author_id
='1'和microblog
。page_id
='1')
联盟
(
选择
page_review
。review_content
,page_review
。date_created
,page_review
。author_id
,page_review
。page_id
来自
page_review
其中
page_review
。author_id
='1'和page_review
。page_id
='1')
关于php - 如何用日期排序合并两个表MySQL-PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816809/