我尝试使用以下查询,如果它只有一条having语句,它就会按预期工作。如果我添加第二个having语句,它将不起作用。
SELECT candidate.first_name,
candidate.last_name,
qualification.code,
property.value AS funding_band_value,
qualification.funding_band,
property.value AS qualification_level_value,
qualification.qualification_level_id
FROM candidate_qualification, candidate, qualification, property
WHERE candidate_qualification.candidate_id=candidate.id and
candidate_qualification.qualification_id=qualification.id
HAVING funding_band_value = (select property.value from property where qualification.funding_band=property.id) and
HAVING qualification_level_value = (select property.value from property where qualification.qualification_level_id=property.id)有人能解释一下为什么这个不起作用吗?我应该怎么做?
发布于 2010-09-10 23:46:50
具有与WHERE或GROUP BY相似的行为。引用它一次就可以开始使用它,并将多个语句与and或or运算符组合在一起。深入研究查询解析器可能会给出更明确的答案。
发布于 2010-09-10 23:40:45
您不需要使用here,只需使用AND,因此它是WHERE子句的一部分。
子查询不是必需的,这些表已经联接了。
像这样的东西应该更接近你想要的:
SELECT c.first_name,
c.last_name,
q.code,
p.value AS funding_band_value,
q.funding_band,
p.value AS qualification_level_value,
q.qualification_level_id
FROM candidate_qualification cq
INNER JOIN candidate c ON cq.candidate_id=c.id
INNER JOIN qualification q ON cq.qualification_id=q.id
INNER JOIN property p ON q.funding_band=p.id
and q.qualification_level_id=p.idhttps://stackoverflow.com/questions/3686017
复制相似问题