| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:求高手帮忙,这个SQL语句怎么写,万分感谢
只看楼主 加入收藏
jnrzhz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
求高手帮忙,这个SQL语句怎么写,万分感谢
这个问题困扰了很久,上次提问可能我没描述清楚,没有得到正确的答案,今天详细描述,希望哪位热心大侠能耐心看完描述,如能解决,万分感激,拜谢!

 数据库里有两个表 SMT_yp(用户表) 和 SMT_cp(产品表)
 其中 SMT_cp(产品表) 中的SMT_yp_id 字段对应SMT_yp(用户表)中的SMT_id字段
 
1、SMT_cp表里主要字段说明:SMT_id(自动编号字段) SMT_date(产品发布时间字段) SMT_yp_id(对应用户表的用户SMT_id字段) SMT_cpjg(产品价格字段)、SMT_cpname(产品名称字段)

2、SMT_yp表里主要字段说明:SMT_id(自动编号字段) SMT_date(用户注册时间字段) SMT_coname(用户名称字段)SMT_vip(用户等级字段)

3、这是我原来的SQL语句:查询结果是先查询出每个用户发布的产品中SMT_id最大的一条产品显示,然后再查询每个用户发布的所有产品显示,根据用户发布产品的时间、用户等级进行排序。

sql="select SMT_cp.SMT_id as cpid,SMT_cp.SMT_date,SMT_cp.SMT_cpjg,SMT_cp.SMT_cpname,SMT_cp.SMT_yp_id,SMT_yp.SMT_id,SMT_yp.SMT_coname,SMT_yp.SMT_vip,0 as px from SMT_cp,SMT_yp where SMT_cp.SMT_id in (select max(SMT_cp.SMT_id) from SMT_cp Where 1=1 group by SMT_cp.SMT_yp_id )and SMT_cp.SMT_yp_id=SMT_yp.SMT_id   
union all  
select SMT_cp.SMT_id as cpid,SMT_cp.SMT_date,SMT_cp.SMT_cpjg,SMT_cp.SMT_cpname,SMT_cp.SMT_yp_id,SMT_yp.SMT_id,SMT_yp.SMT_coname,SMT_yp.SMT_vip,1 as px from SMT_cp,SMT_yp where SMT_cp.SMT_yp_id=SMT_yp.SMT_id order by px,SMT_yp.paixu,SMT_cp.SMT_date DESC"


4、现在需要对这句SQL语句进行修改:想要得到的查询结果是先查询出每个用户产品发布时间SMT_date最新的一条产品,(因为用户在后台可对自己发布的全部产品进行一键更新全部产品时间,也可以更新单张产品的时间,这样有些用户一键更新后所有的产品发布时间都是相同的,有的选择单张更新的则会有时间先后顺序),
如果一些用户存在发布的所有产品时间全部相同情况,则提取他SMT_id最大的一张,接下来的就是显示每个用户发布的全部产品,根据用户发布产品的时间、用户等级进行排序。


希望能完整的看一下我的整个问题描述,是本人是菜鸟,回答尽量完整,帮帮忙,能够根据上面表的字段进行修改,万分感谢!

搜索更多相关主题的帖子: 产品 用户 
2012-07-05 19:52
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:20 
楼主,从你给的代码里学到了一些技巧!
按你的要求,对你的SQL语句进行了修改,我这儿没有数据,你调试一下吧!

select
    SMT_cp.SMT_id as cpid
    ,SMT_cp.SMT_date
    ,SMT_cp.SMT_cpjg
    ,SMT_cp.SMT_cpname
    ,SMT_cp.SMT_yp_id
    ,SMT_yp.SMT_id
    ,SMT_yp.SMT_coname
    ,SMT_yp.SMT_vip
    ,0 as px
from SMT_cp
    inner join SMT_yp on SMT_cp.SMT_yp_id=SMT_yp.SMT_id
    inner join (select max(convert(varchar(20),SMT_cp.SMT_date,20)+str(SMT_cp.SMT_id)) as max_v from SMT_cp group by SMT_cp.SMT_yp_id) max_cp_id on max_cp_id.max_v= convert(varchar(20),SMT_cp.SMT_date,20)+str(SMT_cp.SMT_id)
union all
select
    SMT_cp.SMT_id as cpid
    ,SMT_cp.SMT_date
    ,SMT_cp.SMT_cpjg
    ,SMT_cp.SMT_cpname
    ,SMT_cp.SMT_yp_id
    ,SMT_yp.SMT_id
    ,SMT_yp.SMT_coname
    ,SMT_yp.SMT_vip
    ,1 as px
from SMT_cp
    inner join SMT_yp on SMT_cp.SMT_yp_id=SMT_yp.SMT_id
order by px,SMT_yp.SMT_id,SMT_cp.SMT_date DESC,SMT_yp.SMT_vip

不知道我对楼主的问题描述和修改要求,理解得对不对?

做自己喜欢的事!
2012-07-07 10:00
快速回复:求高手帮忙,这个SQL语句怎么写,万分感谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019546 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved