日期:2014-05-17  浏览次数:20506 次

SQL 三表联合查询
我现在有三个表
Ytable 业务员表:YID,YName,date(业绩员ID,业务员姓名,创建时间)
Ctable 客户表:    CID,CName,YID(客户ID,客户姓名,业务员ID)
Mtable 回款表:     MID,Money,CID,Date(业绩ID,回款金额,回款客户ID,回款时间)
我现在想查询出三个月没有回款的业务员数据。
我现在用这个语名只能查询出有过回款记录的,我想把还没有一个客户回款,创建时间超过三个月的也查询出来
select * from Ytable left join Ctable on Ctable.YID=Ytable.YID left join Mtable on Mtable.CID=Ctable.CID where Mtable.Date<=dateadd(m,-3,getdate())

------解决方案--------------------
SELECT  Y.业务员姓名
FROM    Ytable Y
WHERE   NOT EXISTS ( SELECT 1
                     FROM   Mtable M
                            INNER JOIN Ctable C ON M.汇款客户ID = C.cid
                     WHERE  C.业务员ID = Y.业绩员ID   --少些一个Y
                            AND M.date <= DATEADD(m, -3, GETDATE()) )

------解决方案--------------------
try this,

select * 
 from Ytable a
 where not exists
 (select 1 
  from Ctable b
  inner join Mtable c on b.客户ID=c.回款客户ID
  where datediff(mm,c.回款时间,getdate())<=3)

------解决方案--------------------

select * 
from Ytable 
left join Ctable on Ctable.YID=Ytable.YID 
left join Mtable on Mtable.CID=Ctable.CID 
where Mtable.Date<=dateadd(m,-3,getdate()) and Mtable.CID is null