注册 登录
编程论坛 SQL Server论坛

sql left join 问题,求指导

aotoman 发布于 2015-12-21 11:55, 2717 次点击
程序代码:
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
求解。。。
6 回复
#2
hu9jj2015-12-21 13:54
等号后面的就是一个“东西”嘛。
 
                   (SELECT   MAX(PV) AS Expr1
                     FROM      dbo.DS04_YMC_BaiDuLiuLiang AS c
                     WHERE   (b.ItemID_YMC = ItemID_YMC) AND (b.date = date))
#3
aotoman2015-12-21 15:11
回复 2楼 hu9jj
恩恩,是这样的哈哈,脑子秀逗了。
但是我还有个问题:
“=”后面()
里面的东西 那是一个单独的查询这个查询前面也没有 a.或者b.或者c.的这些东西。那么他倒是()里边出来的是什么东西,这两个东西怎么可以相等呢?
#4
tlliqi2015-12-22 18:12
只要知道整个(SELECT   MAX(PV) AS Expr1
                     FROM      dbo.DS04_YMC_BaiDuLiuLiang AS c
                     WHERE   (b.ItemID_YMC = ItemID_YMC) AND (b.date = date)) 是个什么结果不就明白了
#5
kinvanhon2015-12-23 08:34
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(最大值)
#6
aotoman2016-01-07 17:47
回复 4楼 tlliqi
谢谢,你太厉害了~~啥都知道  
#7
aotoman2016-01-07 17:47
回复 5楼 kinvanhon
谢谢
1