I am having some trouble with an sql query. The below query returns the rights result. It returns the members in the table that are male, speak swedish and are in group 4.
SELECT DISTINCT Member.ID
FROM Member
LEFT OUTER JOIN Experience ON Experience.MemberID = Member.ID
LEFT OUTER JOIN Qualification ON Qualification.MemberID = Member.ID
LEFT OUTER JOIN Language On Language.MemberID = Member.ID
LEFT OUTER JOIN Member_Interests ON Member_Interests.MemberID = Member.ID
LEFT OUTER JOIN Group_Members ON Group_Members.MemberID = Member.ID
WHERE 1=1 AND Gender = 'male' AND Language.Name IN ( 'Swedish' ) AND Group_Members.GroupID = 4
However if I exclude the other where criteria that search directly on the members table then the language.Name is simply ignored. Ie.
SELECT DISTINCT Member.ID
FROM Member
LEFT OUTER JOIN Experience ON Experience.MemberID = Member.ID
LEFT OUTER JOIN Qualification ON Qualification.MemberID = Member.ID
LEFT OUTER JOIN Language On Language.MemberID = Member.ID
LEFT OUTER JOIN Member_Interests ON Member_Interests.MemberID = Member.ID
LEFT OUTER JOIN Group_Members ON Group_Members.MemberID = Member.ID
WHERE 1=1 AND Language.Name IN ( 'Swedish' ) AND Group_Members.GroupID = 4
The above query returns all members that are in group 4. The Swedish part is simply ignored and as long as there is a langauge in the Langauges table called Swedish then all users are returned. If the language is not in the table then no users are returned.
I would like the second query to just return all members in group 4 that speak swedish. Does anyone know why this is not happening?
Move the filters on the left joined tables to the joins.
eg:
etc.