三张桌子连接给了我记录的所有组合

时间:2012-06-27 12:28:31

标签: sql inner-join

当我写下如下的查询时......它写的是所有记录的组合。 查询中的错误是什么?

SELECT ven.vendor_code, add.address1 
    FROM vendor ven INNER JOIN employee emp 
    ON ven.emp_fk = emp.id 
    INNER JOIN address add 
    ON add.emp_name = emp.emp_name;

1 个答案:

答案 0 :(得分:1)

使用内部联接,您可以在ON子句中的两个表之间放置所有链接(关系)。

假设关系良好,您可以测试以下查询以查看它们是否真正组合了所有记录:

SELECT count(*)
from vendor ven
inner join employee emp on ven.emp_fk = emp.id 
inner join address add on add.emp_name = emp.emp_name;

SELECT count(*)
       add.address1
from vendor ven, employee emp, address add

如果两个查询都返回相同的结果(我怀疑),那么你真的有你说的话。

如果没有,正如我所假设的那样,也许你错过了一个关系或限制来过滤结果的数量。