多表查询里的笛卡尔积

在数学中,笛卡尔乘积是指两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
笛卡尔积是在多表进行联合查询的时候会出现的一种情况。在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义。
比如有两张表:
表一:
表二:
在进行查询的时候:
    select studentname,Subjectname from Student,subject
会出现下面的情形,也就是笛卡尔现象,表一有5条记录,表二有3条记录,那么对于第一张表而言有5种选择,而对于第二张表来说有3种选择。所以结果就是5*3种选择了,也就是笛卡尔积。