求助:SQL数据库多个数据表的复合查询问题
发布网友
发布时间:2022-04-07 20:00
我来回答
共4个回答
热心网友
时间:2022-04-07 21:29
select t2.FLD_StandardScore,FLD_MeanScore,FLD_SScore from TBL_DICT_PARAMETER as t1 join
(select FLD_StandardScore,FLD_EvItemAttID from TBL_EV_STATISTICS
where FLD_Flag in(
select top 1 FLD_Flag from TBL_EV_USER_OPERATION
where FLD_EvItemID=<给定值> order by FLD_EvDate desc)) AS t2
on t1.FLD_EvItemAttID=t2.FLD_EvItemAttID
如果是sql 2005的话可以用cte写出来很清楚明了。
呵呵,不好意思,那个)号我是在中文状态下输入入的,改成英文状态的就好了。用max的话没有group by是会报错的,
热心网友
时间:2022-04-07 22:47
给你建议,用视图来做,不要写太复杂的查询语句。
热心网友
时间:2022-04-08 00:22
呵呵,一句sql就够了
SELECT A.FLD_STANDARDSCORE, B.FLD_MEANSCORE, B.FLD_SSCORE
FROM TBL_EV_STATISTICS A,
TBL_DICT_PARAMETER B,
(SELECT FLD_FLAG, MAX(FLD_EVDATE)
FROM TBL_EV_USER_OPERATION
WHERE FLD_EVITEMID = 变量) C
WHERE A.FLD_EVITEMATTID = B.FLD_EVITEMATTID
AND A.FLD_FLAG = C.FLD_FLAG
把sql先在mssql 的查询分析器中执行,看看是否有报错,没有报错再看数据问题,这个sql应该没有问题的,其他的列不会有影响
其实你这个是个主从表和一个对照表的关系
热心网友
时间:2022-04-08 02:13
你的日期字段FLD_EvDate会有重复吗?这个很重要。