日期:2014-05-18  浏览次数:20394 次

求一sql语句【在线等】
先上表结构
关联表


表一


表二


关联表中的objID对应表 一和表二中的IFid
根据UserID查询出10条VisitType等于4或者5的值按倒序排列。
然后根据这查出来的objID到表一表二中间查。
注意:VisitType等于4时候要在表一中查
  VisitType等于5时候要在表二中查。

各位大侠有好方法麽?我sql不好

------解决方案--------------------
select * from 表1 where ifid in(select objid from (select top 10 objid from 关联表 where visittype in (4,5)) where visittype=4)
union all
select * from 表2 where ifid in(select objid from (select top 10 objid from 关联表 where visittype in (4,5)) where visittype=5)
------解决方案--------------------
select * from 关联表
left join 表一 on 表一.IFid = 关联表.objID and 关联表.VisitType = 4
left join 表二 on 表二.IFid = 关联表.objID and 关联表.VisitType = 5
where VisitType in (4, 5) and UserID = ''
order by VisitType
------解决方案--------------------
SELECT Top(10) ...
FROM (

SELECT ...
FROM Table_1 T1
,Table_2 T2
 WHERE T1.VisitType = '4'
AND T1.ObjID = T2.IFid

Union All

SELECT ...
FROM Table_1 T1
,Table_3 T3
 WHERE T1.VisitType = '5'
AND T1.ObjID = T3.IFid
) TEM
 WHERE ...
 ORDER BY ...
不知道这样怎么样。没写完全。
------解决方案--------------------
(select * from 表1, (select top 10 objid from 关联表 where visittype in (4,5)) as A 
where 表1.IFid = A.IFid AND A.VisitType=4)
union all
(select * from 表2, (select top 10 objid from 关联表 where visittype in (4,5)) as A 
where 表2.IFid = A.IFid AND A.VisitType=5)

select * 好像得字段一致
------解决方案--------------------
探讨
建立俩视图,或者用存储过程。。。