我正在从三个表中检索数据以满足我的要求,因此我编写了以下查询
我得到了正确的结果,但问题是记录重复了
中的问题那个查询。我是查询绑定到网格视图控件的结果。请帮帮我
SELECT DISTINCT (tc.coursename), ur.username, uc. DATE, 'Paid' AS Status
FROM tblcourse tc, tblusereg ur, dbo.UserCourse uc
WHERE tc.courseid IN (SELECT ur1.courseid
FROM dbo.UserCourse ur1
WHERE ur1.userid = @userid)
AND ur.userid = @userid
AND uc. DATE IS NOT NULL
AND ur.course - id = uc.course - id
答案 0 :(得分:3)
tblcourse tc,tblusereg ur之间没有加入。所以你得到一个交叉连接,尽管IN(实际上是一个JOIN)
DISTINCT也适用于整行:不是一列。
注意:你提到了两次dbo.UserCourse但是使用了不同的列名和courseid [course-id]
用JOIN重写。
select distinct
tc.coursename, ur.username, uc.[date], 'Paid' as [Status]
from
dbo.tblcourse tc
JOIN
dbo.tblusereg ur ON tc.courseid = ur.[course-id]
JOIN
dbo.UserCourse uc ON ur.[course-id] = uc.[course-id]
where
ur.userid=@userid
and
uc.[date] is not null
此可以解决您的问题......
答案 1 :(得分:0)
更改查询的第一部分
select distinct (tc.coursename),
要
select distinct tc.coursename,
使所有列distinct
不仅仅是tc.coursename