2011-07-11 33 views
0

下面的MySQL查询...MySQL查询与次数,使错误

SELECT a.*, b.*, 
     ( 
      SELECT COUNT(*) 
      FROM lp_units c 
      WHERE c.property_id = a.property_id 
     ) AS unitcount 
FROM lp_property a, 
    lp_property_confidential b 
WHERE a.property_id = b.property_id 
AND c.unitcount<= a.no_of_units 
AND a.account_id = '1' 

返回一个错误......

Unknown column 'c.unitcount' in 'where clause' 

我觉得我的查询是可以理解的。解决它运行....

在此先感谢...

+5

子查询有它自己的范围。 – bernie

+0

但我想比较'unitcounts'请说任何替代解决方案@Adam –

+0

延长Adam的评论:把检查放在子查询中。 – Jacob

回答

1

不要使用c.unitcount。只需unitcountunitcount不是c的列,而是由子查询生成的临时表。

但是,无论如何,这个查询可能更好地写入连接。

尝试此查询

SELECT 
    a.*, 
    b.*, 
    COUNT(c.property_id) as unitcount 
    FROM lp_property a 
    JOIN lp_property_confidential b ON a.property_id = b.property_id 
    JOIN lp_units c ON c.property_id = a.property_id 
    WHERE 
    a.account_id = '1' 
    GROUP BY a.property_id 
    HAVING unitcount <= a.no_of_units 
+0

感谢michael给出清晰的描述性查询... –

+0

没问题。很高兴我能帮上忙! –