| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2522 人关注过本帖
标题:sql left join 问题,求指导
只看楼主 加入收藏
aotoman
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-12-21
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
sql left join 问题,求指导
程序代码:
SELECT DISTINCT TOP (100) PERCENT DATEADD(dd,-1,a.date) as date, a.ItemID_YMC, a.ItemID_YMC2, b.PV
FROM     ABC  AS a LEFT OUTER JOIN
                EFG AS b 
        ON a.ItemID_YMC = b.ItemID_YMC AND a.date = b.date AND b.PV =   --就是这个b.PV这个是什么意思???
                    (SELECT   MAX(PV) AS Expr1
                     FROM      dbo.DS04_YMC_BaiDuLiuLiang AS c
                     WHERE   (b.ItemID_YMC = ItemID_YMC) AND (b.date = date)) 

大神好,我有个问题:
我能看懂是LEFT JOIN
也能看懂ON后面 “a.ItemID_YMC = b.ItemID_YMC AND a.date = b.date”
但是到  “ AND b.PV =   
                    (SELECT   MAX(PV) AS Expr1
                     FROM      dbo.DS04_YMC_BaiDuLiuLiang AS c
                     WHERE   (b.ItemID_YMC = ItemID_YMC) AND (b.date = date)) ”
就看不明白了。这里的b.PV 为什么没有 = “一个东西”
例如 a.ItemID_YMC = b.ItemID_YMC 或者  a.date = b.date
求解。。。
2015-12-21 11:55
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
等号后面的就是一个“东西”嘛。
 
                   (SELECT   MAX(PV) AS Expr1
                     FROM      dbo.DS04_YMC_BaiDuLiuLiang AS c
                     WHERE   (b.ItemID_YMC = ItemID_YMC) AND (b.date = date))

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-12-21 13:54
aotoman
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-12-21
收藏
得分:0 
回复 2楼 hu9jj
恩恩,是这样的哈哈,脑子秀逗了。
但是我还有个问题:
“=”后面()
里面的东西 那是一个单独的查询这个查询前面也没有 a.或者b.或者c.的这些东西。那么他倒是()里边出来的是什么东西,这两个东西怎么可以相等呢?
2015-12-21 15:11
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
只要知道整个(SELECT   MAX(PV) AS Expr1
                     FROM      dbo.DS04_YMC_BaiDuLiuLiang AS c
                     WHERE   (b.ItemID_YMC = ItemID_YMC) AND (b.date = date)) 是个什么结果不就明白了
2015-12-22 18:12
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
收藏
得分:4 
SELECT DISTINCT TOP (100) PERCENT DATEADD(dd,-1,a.date) as date, a.ItemID_YMC, a.ItemID_YMC2, b.PV
FROM ABC AS a LEFT OUTER JOIN EFG AS b ON a.ItemID_YMC = b.ItemID_YMC AND a.date = b.date AND b.PV = (SELECT MAX(PV) AS Expr1 FROM dbo.DS04_YMC_BaiDuLiuLiang AS c WHERE (b.ItemID_YMC = ItemID_YMC) AND (b.date = date))
红色标识的是代表从DS04_YMC_BaiDuLiuLiang中查询出符合b.ItemID_YMC = ItemID_YMC AND b.date = date这两个条件的最大的PV字段值,因为返回的数量总是一个,所以可以放在“=”的后面,相当于b.PV = 1000(最大值)
2015-12-23 08:34
aotoman
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-12-21
收藏
得分:0 
回复 4楼 tlliqi
谢谢,你太厉害了~~啥都知道  
2016-01-07 17:47
aotoman
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-12-21
收藏
得分:0 
回复 5楼 kinvanhon
谢谢
2016-01-07 17:47
快速回复:sql left join 问题,求指导
数据加载中...
 
   



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

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