SQLクエリに問題があります。以下のクエリは、権利の結果を返します。これは、男性でスウェーデン語を話し、グループ 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
ただし、members テーブルを直接検索する他の where 基準を除外すると、language.Name は単純に無視されます。すなわち。
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
上記のクエリは、グループ 4 にあるすべてのメンバーを返します。スウェーデン語の部分は単純に無視され、言語テーブルにスウェーデン語という言語がある限り、すべてのユーザーが返されます。言語が表にない場合、ユーザーは返されません。
2 番目のクエリで、スウェーデン語を話すグループ 4 のすべてのメンバーを返すようにしたいと思います。なぜこれが起こっていないのか誰にも分かりますか?