新闻表List由list_id list_title list_date user_id user_name组成
评论表ping 由ping_id user_id user_name list_id ping_date 现建立一个视图查询实现如下列表显示
list_id list_title list_date user_id user_name ping_user_id ping_user_name ping_date ping_count
新闻ID 新闻标题 发布日期 发布人ID 发布人用户名 最后评论人ID 最后评论人用户名 最后评论的日期 总评论数 通过表list的list_id和评论表ping的list_id相等建立LEFT OUTER JOIN 建立一个视图 语句如下 SELECT dbo.list.list_id, dbo.list.list_title, dbo.list.list_date, dbo.list.user_name, dbo.list.user_id, MAX(dbo.ping.user_name) AS ping_user_name,
MAX(dbo.ping.user_id) AS ping_user_id, MAX(dbo.ping.ping_date) AS ping_date_last,
COUNT(dbo.ping.ping_id) AS ping_count FROM dbo.list LEFT OUTER JOIN
dbo.ping ON dbo.list.list_id = dbo.ping.list_id GROUP BY dbo.list.list_id, dbo.list.list_title, dbo.list.list_date, dbo.list.user_name, dbo.list.user_id ORDER BY dbo.list.list_id DESC,
MAX(dbo.ping.ping_date) DESC
为什么 "最后评论人ID" "最后评论人用户名" 显示总是错误 ,它不是显示的是对应最后日期的评论人和评论ID 而是最大的值
请问如何修改使得 ping_user_id ping_user_name 和ping_date 对应 显示为最后评论的人 ID 日期 ,我原本数据库是ACCESS用下面俩行就可以了
在 access “查询”中 用last 函数就能搞定,
last(dbo.ping.user_name) AS ping_user_name,
last(dbo.ping.user_id) AS ping_user_id,
网友tjccn_wx提供如下,可以运行了,但这么着效率会比较差
比较直观的是
MAX(dbo.ping.user_name) AS ping_user_name,
MAX(dbo.ping.user_id) AS ping_user_id,
改成
(select top 1dbo.ping.user_name from ping dbo.ping where list.list_id = ping.list_id ordr by dbo.ping.ping_date desc) AS ping_user_name,
(select top 1dbo.ping.user_id from ping dbo.ping where list.list_id = ping.list_id ordr by dbo.ping.ping_date desc) AS ping_user_id, 请问还有其它办法吗?
评论表ping 由ping_id user_id user_name list_id ping_date 现建立一个视图查询实现如下列表显示
list_id list_title list_date user_id user_name ping_user_id ping_user_name ping_date ping_count
新闻ID 新闻标题 发布日期 发布人ID 发布人用户名 最后评论人ID 最后评论人用户名 最后评论的日期 总评论数 通过表list的list_id和评论表ping的list_id相等建立LEFT OUTER JOIN 建立一个视图 语句如下 SELECT dbo.list.list_id, dbo.list.list_title, dbo.list.list_date, dbo.list.user_name, dbo.list.user_id, MAX(dbo.ping.user_name) AS ping_user_name,
MAX(dbo.ping.user_id) AS ping_user_id, MAX(dbo.ping.ping_date) AS ping_date_last,
COUNT(dbo.ping.ping_id) AS ping_count FROM dbo.list LEFT OUTER JOIN
dbo.ping ON dbo.list.list_id = dbo.ping.list_id GROUP BY dbo.list.list_id, dbo.list.list_title, dbo.list.list_date, dbo.list.user_name, dbo.list.user_id ORDER BY dbo.list.list_id DESC,
MAX(dbo.ping.ping_date) DESC
为什么 "最后评论人ID" "最后评论人用户名" 显示总是错误 ,它不是显示的是对应最后日期的评论人和评论ID 而是最大的值
请问如何修改使得 ping_user_id ping_user_name 和ping_date 对应 显示为最后评论的人 ID 日期 ,我原本数据库是ACCESS用下面俩行就可以了
在 access “查询”中 用last 函数就能搞定,
last(dbo.ping.user_name) AS ping_user_name,
last(dbo.ping.user_id) AS ping_user_id,
网友tjccn_wx提供如下,可以运行了,但这么着效率会比较差
比较直观的是
MAX(dbo.ping.user_name) AS ping_user_name,
MAX(dbo.ping.user_id) AS ping_user_id,
改成
(select top 1dbo.ping.user_name from ping dbo.ping where list.list_id = ping.list_id ordr by dbo.ping.ping_date desc) AS ping_user_name,
(select top 1dbo.ping.user_id from ping dbo.ping where list.list_id = ping.list_id ordr by dbo.ping.ping_date desc) AS ping_user_id, 请问还有其它办法吗?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货