Получение всех полей с помощью SQL Join

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

Таблица проекта

Идентификатор проекта
название проекта
так далее

Таблица потребностей проекта

нужен идентификатор
необходимость

Надо к столам проектов

идентификатор проекта
нужен идентификатор

волонтерский стол (члены группы)

все данные участника

таблица member_skills

ID пользователя
skill_id (он же нужен для проектов)

вот мой запрос:

$query = "INSERT INTO PROJECT_NOTIFY_TEMP (project_id, project_name, volunteer_name, volunteer_email, volunteer_skills)
SELECT p.project_id as PROJECT_ID, p.project_name as PROJECT_NAME, CONCAT(m.first_name,' ',m.last_name) as FULL_NAME, m.email as EMAIL, GROUP_CONCAT(DISTINCT pn.need ORDER BY pn.need SEPARATOR ', ') as NEED
FROM PROJECTS p
JOIN project_needs_to_projects pntp
ON (pntp.project_id = p.PROJECT_ID)
JOIN project_needs pn
ON (pntp.need_id = pn.need_id AND pn.active = 'Y')
JOIN member_skills ms
ON (pn.need_id = ms.skill_id)
JOIN members m
ON (ms.member_id = m.member_id)
WHERE p.PROJECT_ID = '".$PROJECT_ID."'
GROUP BY m.member_id";

Он извлекает всю информацию правильно, но я не смог понять, как извлечь все потребности проекта. Прямо сейчас это только тянет потребности, для которых у меня есть матч добровольца.
По сути, я хочу использовать их (как навыки) и потребности проекта (как потребности)

0

Решение

Трудно ответить без примеров данных и ожидаемого результата.

Это может произойти, если все значения project_needs не в project_needs_to_projects Таблица. Как вы используете JOINон пытается вернуть записи с совпадающими значениями в обеих таблицах слева и справа от JOIN,

С помощью RIGHT JOIN за project_needs вместо JOIN вернет все значения из project_needs и соответствующие значения + нулевые значения из project_needs_to_projects Таблица. Ваш запрос будет выглядеть так

SELECT p.project_id as PROJECT_ID, p.project_name as PROJECT_NAME,
CONCAT(m.first_name,' ',m.last_name) as FULL_NAME, m.email as EMAIL,
GROUP_CONCAT(DISTINCT pn.need ORDER BY pn.need SEPARATOR ', ') as NEED
FROM PROJECTS p
JOIN project_needs_to_projects pntp
ON (pntp.project_id = p.PROJECT_ID)
RIGHT JOIN project_needs pn
ON (pntp.need_id = pn.need_id AND pn.active = 'Y')...
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]