У меня возникла ситуация, когда я снова запускаю запрос таблиц MEMBERS, MEMBERUDFS и MEMERUDFSETUPS. Где MEMBER UDF являются определяемыми пользователем полями, которые создаются системным администратором для хранения данных о клиентах в настраиваемых полях. Таблица UDFSETUPS определяет настраиваемые поля, а MEMBERUDFS сохраняет значения этих полей, если они существуют.NULL Значения не возвращаются
Проблема, с которой я сталкиваюсь, когда я извлекаю данные обратно, я не получаю строки для записей, имеющих UDF с идентификатором 17 (MEMBERUDFS.udfid = '17'), которые не имеют записи или равны нулю. Я попробовал Left Joins, но, похоже, это не помогло.
SELECT MEMBERS.scancode, MEMBERS.fname, MEMBERS.lname, MEMBERS.datejoin, MEMBERS.entrydate
, MEMBERS.relationship, MEMBERUDFS.udfvalue
FROM MEMBERS
LEFT OUTER JOINMEMBERUDFS
ON MEMBERS.memid = MEMBERUDFS.memid
INNER JOIN MEMBERUDFSETUPS
ON MEMBERUDFS.udfid = MEMBERUDFSETUPS.udfid
WHERE (MEMBERS.siteid = @rvSite)
AND (MEMBERS.status = 'A')
AND (MEMBERS.relationship = 'M')
AND (MEMBERUDFS.udfid = '17')
AND (MEMBERS.datejoin BETWEEN @rvStartDate AND @rvEndDate)
AND (MEMBERS.mtypeid NOT IN (5, 6, 7, 11, 14, 31))
OR (MEMBERS.siteid = @rvSite)
AND (MEMBERS.relationship = 'P')
AND (MEMBERUDFS.udfid = '17')
AND (MEMBERS.entrydate BETWEEN @rvStartDate AND @rvEndDate)
Вы все еще есть 'ВНУТРЕННЕЙ JOIN' в' MemberUDFSetups' –
'memberudf.udfid' в предложении where, заставляя их быть исключенными, вам нужно переместить этот предел на соединение или проверить наличие нулей там, где есть предложение по этому значению. – xQbert