繁体   English   中英

使用SQL Join获取所有字段

[英]Getting all of the fields using SQL Join

所以这是我的问题。 我有多个表需要从中提取数据。

项目表

专案ID专案名称等

项目需求表

需要身份证

需要项目表

项目编号需要编号

志愿者桌(又名会员)

所有会员资料

member_skills表

member_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";

它可以正确提取所有信息,但是我一直无法弄清楚如何提取所有项目需求。 现在,它只满足了我自愿参加比赛的需求。 基本上,我想拉那些(作为技能)并拉项目需求(作为需求)

没有一些样本数据和预期输出,很难回答。

如果project_needs所有值都不在project_needs_to_projects表中,则可能发生这种情况。 在使用JOIN ,它将尝试在JOIN左侧和右侧的两个表中返回具有匹配值的记录。

project_needs使用RIGHT JOIN而不是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')...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM