У меня есть следующий запрос, который работает, но теперь я застрял. Я хотел бы добавить еще два фильтра, и я не совсем уверен, как это сделать. В отношении таблицы у меня есть поле, называемое отношением. Мне нужно убедиться, что данные отца вернулись или у отца или отчима в этом поле. Точно так же мне нужны материальные данные для фильтрации Мачехой, матерью. Конечно, у ученика может быть не отец или мать, но я все же хочу, чтобы данные возвращались, если у них есть один родитель.Добавление дополнительных фильтров в запрос
WHERE p.pk_PupilID IN('" & pks & "') AND rmother.Relationship IN('Mother','Stepmother') OR rfather.Relationship IN('Father','Stepfather')
код работает до сих пор
SELECT DISTINCT p.pk_PupilID, pn.Title, pn.Forename, pn.Surname, pn.PreferredForename, father.pk_PersonID, father.Title, father.Forename, father.Surname, mother.pk_PersonID, mother.Title, mother.Forename, mother.Surname, pn.DoB, pn.Gender, h.House, p.Form, p.BoardingStatus, p.Tutor, h.Housemaster , f.Salutation
FROM Family AS f
LEFT JOIN RELATION AS rpupil ON f.pk_FamilyID = rpupil.fk_FamilyID
LEFT JOIN PUPIL AS p ON rpupil.fk_PersonID = p.pk_PupilID
LEFT JOIN PERSON AS pn ON p.pk_PupilID = pn.pk_PersonID
LEFT JOIN HOUSE AS h ON p.fk_DepartmentID = h.fk_DepartmentID
LEFT JOIN RELATION AS rfather ON p.pk_PupilID = rfather.fk_PersonID
LEFT JOIN PERSON AS father ON rfather.fk_RelatedPersonID = father.pk_PersonID
LEFT JOIN RELATION AS rmother ON p.pk_PupilID = rmother.fk_PersonID
LEFT JOIN PERSON AS mother ON rmother.fk_RelatedPersonID = mother.pk_PersonID
WHERE p.pk_PupilID IN('" & pks & "')
Вы убиваете 'LEFT JOIN' своим предложением' WHERE'. Это эффективно превращает его в «INNER JOIN». Любую дальнейшую фильтрацию в правой таблице «LEFT JOIN» (или в левую таблицу «ПРАВИЛЬНОЕ СОЕДИНЕНИЕ») необходимо добавить в условия «ON». – Siyual