Ответ 1
Измените оба параметра JOIN
на LEFT JOIN
s. Вы получите все свои записи от member_individual, где находится предложение where, и значения NULL для других таблиц, в которых строки не совпадают.
Я запускаю отчет, который экспортирует информацию для членов комитетов в таблицу Excel.
Здесь мой запрос:
SELECT membership_organization.name AS Firm,
membership_individual.first AS FirstName,
membership_individual.middle AS MiddleName,
membership_individual.last AS LastName,
membership_individual.email AS Email,
membership_individual.phone AS Phone,
membership_location.addr1 AS Address1,
membership_location.addr2 AS Address2,
membership_location.city AS City,
membership_location.state AS State,
membership_location.zipcode AS Zip
FROM membership_individual
JOIN membership_organization ON membership_individual.org_name_id = membership_organization.id
JOIN membership_location ON membership_individual.location_id = membership_location.id
WHERE membership_individual.id IN ({list if ids})
ORDER BY LastName
Проблема заключается в том, что некоторые из членов не имеют идентификатора местоположения, либо он установлен в 0, поэтому эти члены не отображаются в отчете.
Есть ли способ, которым я могу определить место JOIN? Если идентификатор местоположения членов существует, вытащите информацию, если не покажете мне имеющуюся информацию.
Измените оба параметра JOIN
на LEFT JOIN
s. Вы получите все свои записи от member_individual, где находится предложение where, и значения NULL для других таблиц, в которых строки не совпадают.
Используйте LEFT OUTER JOIN:
SELECT membership_organization.name AS Firm,
membership_individual.first AS FirstName,
membership_individual.middle AS MiddleName,
membership_individual.last AS LastName,
membership_individual.email AS Email,
membership_individual.phone AS Phone,
membership_location.addr1 AS Address1,
membership_location.addr2 AS Address2,
membership_location.city AS City,
membership_location.state AS State,
membership_location.zipcode AS Zip
FROM membership_individual
JOIN membership_organization ON membership_individual.org_name_id = membership_organization.id
LEFT OUTER JOIN membership_location ON membership_individual.location_id = membership_location.id
WHERE membership_individual.id IN ({list if ids})
ORDER BY LastName
Попробуйте использовать
LEFT JOIN membership_location ON membership_individual.location_id = membership_location.id
вместо вашего варианта.
Используйте левое соединение, то есть ваш запрос станет
SELECT membership_organization.name AS Firm,
membership_individual.first AS FirstName,
membership_individual.middle AS MiddleName,
membership_individual.last AS LastName,
membership_individual.email AS Email,
membership_individual.phone AS Phone,
membership_location.addr1 AS Address1,
membership_location.addr2 AS Address2,
membership_location.city AS City,
membership_location.state AS State,
membership_location.zipcode AS Zip
FROM membership_individual
JOIN membership_organization ON membership_individual.org_name_id = membership_organization.id
LEFT JOIN membership_location ON membership_individual.location_id = membership_location.id
WHERE membership_individual.id IN ({list if ids})
ORDER BY LastName
и вы получите данные для всех участников, даже тех, для которых в таблице местоположения нет строк.