【发布时间】:2012-05-28 00:24:41
【问题描述】:
我在 Mysql 中有 2 个表,一个是承包商,另一个是项目,我想生成一个承包商项目报告,显示项目的批准。问题是 INNER JOIN、LEFT 和 RIGHT OUTER JOIN,都产生相同的结果,即使我忽略了看起来很奇怪的情况,也只会显示承包商的项目。这是我的陈述
SELECT DISTINCT (tbl_contractor.name_v), count( tbl_project.name_v )
FROM tbl_contractor
INNER JOIN tbl_project
ON tbl_project.Contractor=tbl_contractor.contractor_id_v
ON tbl_project.Contractor = tbl_contractor.contractor_id_v
LIMIT 0 , 30;
SELECT DISTINCT (tbl_contractor.name_v), count( tbl_project.name_v )
FROM tbl_contractor
LEFT OUTER JOIN tbl_project
ON tbl_project.Contractor = tbl_contractor.contractor_id_v
LIMIT 0 , 30;
【问题讨论】:
-
尝试从您的查询中删除 distinct。
-
stackoverflow.com/questions/38549/… 该链接应该有助于解释。基本上,您的内部联接采用相交字段,而您的外部联接显示左侧的所有字段匹配它们不相交的空值。假设两个表完全匹配,它们将提供相同的数据。
-
建议:在您的查询中添加一个 group by 以阐明它在做什么。