MySQL查询 - 多个语句不起作用

时间:2010-09-10 15:37:49

标签: mysql

我正在尝试使用以下查询,如果它只有一个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)

有人可以解释为什么这不起作用以及我应该怎么做。

2 个答案:

答案 0 :(得分:1)

HAVING的行为与WHERE或GROUP BY类似。您引用它一次以开始使用它并将多个语句与AND或OR运算符组合。深入了解查询解析器可能会给您一个更明确的答案。

答案 1 :(得分:0)

您不需要在这里使用HAVING,只需使用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.id