2014-01-08 107 views
0
TABLE_1(G_id(fk),A_id(fk),description) 
TABLE_2(U_id(fk),G_id(fk),Permision) 

的G-id为表3的一主键是外源表1和表2内部连接两个表,都有没有主键的外键?

TABLE_3(G_id(pk),name,des) 

现在我正在申请的内上表1和表2加入的基础上G_id不使用表3,但它没有找到记录。为什么?

SELECT * 
FROM TABLE_1 INNER JOIN TABLE_2 
ON TABLE_1.G_id=TABLE_2.G_id 
+0

请注明表格(样本)的内容。 –

+0

添加所有表格和所需输出的样本数据 –

回答

0

没有规则像加入应该有主键或外键。

表中没有任何键,索引可以是连接的一部分。关键是确保您的完整性。

但是,在某些情况下,定义密钥对于您的数据完整性和性能非常有利,SQL Server优化器将足够聪明,可以通过密钥了解您的表关系并且性能更好。

SELECT TABLE_1.* ,TABLE_2 

FROM TABLE_1 INNER JOIN TABLE_2 

ON TABLE_1.G_id=TABLE_2.G_id 

那种你所描述的表有时称为join table。您将在您加入的列中创建一个主键,这既是为了获得唯一性,又因为它更有可能被索引以获得更好的性能。