PostgreSQL的新手,在单个查询中获取父表和子表数据。问题是如果子表中的任何一个具有空记录,则整个查询返回null。
SELECT r.resume_id,
r.resume_name,
r.updation_date,
edu.education_id,
edu.title,
edu.institute,
exp.experience_id,
exp.designation,
exp.company_name,
exp.start_date,
skill.skill_id,
skill.skill_name
FROM user_resume r,
user_education edu,
user_experience exp,
user_skill skill
WHERE edu.resume_id = r.resume_id AND
exp.resume_id = r.resume_id AND
skill.resume_id = r.resume_id AND
r.resume_id = 1592570
这是我的查询,在这种情况下,给定的简历在体验表中没有记录,结果它返回null,如果我删除带经验表的连接,则它返回记录。
更多在简历表中,我还有这些Boolean
字段,如果子表(experience, education or skill table
)没有相关记录,则为false。
education_missing, experience missing, skill missing
等。
答案 0 :(得分:1)
FROM user_resume r
,user_education edu
,user_experience exp
,user_skill skill
is左内连接 - 这是预期的行为......
FROM user_resume r
LEFT OUTER JOIN user_education edu on COLUMNS
LEFT OUTER JOIN user_experience exp on COLUMNS
LEFT OUTER JOIN user_skill skill on COLUMNS
代替
答案 1 :(得分:0)
这会奏效。 LEFT OUTER JOIN将从resume表中为您提供详细信息,子表中的列将显示NULL。
SELECT r.resume_id,
r.resume_name,
r.updation_date,
edu.education_id,
edu.title,
edu.institute,
exp.experience_id,
exp.designation,
exp.company_name,
exp.start_date,
skill.skill_id,
skill.skill_name
FROM user_resume r
LEFT OUTER JOIN user_education edu ON r.resume_id = edu.resume_id
LEFT OUTER JOIN user_experience exp ON r.resume_id = exp.resume_id
LEFT OUTER JOIN user_skill skill ON r.resume_id = skill.resume_id
WHERE
r.resume_id = 1592570