sql server - SQL Join Retrieves more rows than expected -


suppose have following tables

students (studentid int pk, studentname nvarchar) lectures (lectureid pk, startdate, enddate) enrollment (studentid, lectureid) 

when execute following query:

select studentid students 

i 8 rows.. , when execute:

select s.studentid students s join enrollment en on s.studentid = en.studentid 

i 11 rows

why that, , how use join without retrieving rows?

your join fine.

this means there more 1 enrollment per student - e.g. students have enrolled in more 1 lecture / series of lectures

assuming student can register 1 lecture @ time, need join lecture , use date fields

also, if student not enrolled in anything, need consider left outer join.

so query might like

select s.studentid students s  left outer join enrollment en on s.studentid = en.studentid inner join lectures l on en.lectureid = l.lecture id getdate() between l.startdate , l.enddate 

but need have rules in place ensure student cannot concurrently register more 1 lecture (if indeed expected)

hth


Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -