Подтвердить что ты не робот

Присоединиться, если существует запрос MySQL

Я запускаю отчет, который экспортирует информацию для членов комитетов в таблицу 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? Если идентификатор местоположения членов существует, вытащите информацию, если не покажете мне имеющуюся информацию.

4b9b3361

Ответ 1

Измените оба параметра JOIN на LEFT JOIN s. Вы получите все свои записи от member_individual, где находится предложение where, и значения NULL для других таблиц, в которых строки не совпадают.

Ответ 2

Используйте 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

Ответ 3

Попробуйте использовать

LEFT JOIN membership_location ON membership_individual.location_id = membership_location.id 

вместо вашего варианта.

Ответ 4

Используйте левое соединение, то есть ваш запрос станет

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

и вы получите данные для всех участников, даже тех, для которых в таблице местоположения нет строк.