如何使用FROM子句中的多个表和WHERE子句中的一些搜索条件来计算一个表中的行?

时间:2010-12-17 10:36:31

标签: mysql database join

我有一个像

的QUERY
SELECT COUNT(*) as cnt 
    FROM tbl_docatrtypegroupdoctype, 
         tbl_doctype, 
         tbl_docatrtypegroup 
    WHERE 1=1  
          AND 
         (tbl_doctype.doctype_name like '%Payment%' 
            OR tbl_doctype.doctype_name like'% Payment' 
            OR tbl_doctype.doctype_name like ' Payment%' ) 
    LIMIT 1

现在在上面的查询中我需要计算where子句中给出的条件下表“tbl_docatrtypegroupdoctype”中的记录数,每当我执行查询时,我得到77计数,但DB中的实际计数是12。

此查询可能存在什么问题,我该如何纠正?

Ant帮助将被评估

谢谢

2 个答案:

答案 0 :(得分:3)

您需要指定加入条件。如果你不这样做会发生什么,而不是你想要的交叉产品。

 SELECT COUNT(*) as cnt 
FROM tbl_docatrtypegroupdoctype JOIN  
     tbl_doctype on (THE CONDITION) JOIN 
     tbl_docatrtypegroup on (THE CONDITION)

或者可以在WHERE子句中指定JOIN条件。


在where子句中:

  WHERE table1.field1 = table2.field2 AND table2.field3 = table3.field4

您加入的字段必须在某种程度上与语义相关。

答案 1 :(得分:0)

您需要在三个表之间应用所有连接条件。