笛卡尔积的错误
什么是笛卡尔积的错误?
我们将多表查询中因为没有建立多表之间连接引起的多表查询的问题就称之为:“笛卡尔积的错误”
这里我们通过几个例子来理解笛卡尔积的错误:
eg1: 查询员工表中的员工id和部门表中的部门名称
SELECT employees id,department_name
#这一条语句就等价于: FROM employees CROSS JOIN departments;
/*
CROSS JOIN关键字的作用就是将任意表进行连接,即使两张表不相关
*/
FROM employees,departments;
- 这个时候我们如果说员工表中有107条记录,部门表中有27条记录,这个时候我们这次多表查询的结果(也就是查询的部门表中的员工id和部门表中的部门名称)也应该有107条记录 , 但是这个时候我们运行之后我们会发现这个时候结果有2889条记录,那么这2889条记录是怎么来的?
- 这里其实是因为: 我们缺少了多表之间的连接条件,所以我们的员工表中查询出来的每一条记录都和我们的部门表中的所有的记录匹配了一遍,所以这个时候就会有: 107 * 27 = 2889条记录
我们将上述这种因为没有建立多表连接引起的多表查询问题就称之为:“笛卡尔积的错误”