我有一个像
的QUERYSELECT 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帮助将被评估
谢谢
答案 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)
您需要在三个表之间应用所有连接条件。