如何引用外键表来引用另一个表?

问题描述:

我有两个表二表名称叫上这个如何引用外键表来引用另一个表?

1. TP_Users 
2. TP_Roles 

TP_Users下面有以下字段

Id (PK, int, not null) 
UserName (nvarchar(50), null) 
UserEmail (nvarchar(50), null) 
DisplayName (nvarchar(50), null) 
Password (nvarchar(50), null) 
RoleId (FK, int, not null) 
IsActive (bit, not null) ------>Foreign Key Reference 
ClientId (int, null) 

TP_Roles有以下字段

Id PK, int, not null 
Role_Name varchar(200), null 
IsActive bit, null 

TP_Users父表的列名RoleId其Refrenced表TP_Roles列na我id
如何建立关系以及如何使用查询链接两个表?

+0

请参阅http://*.com/questions/10028214/add-foreign-key-to-existing-table – rahulbhondave

+0

使用角色联合来沟通这两个表 – cralfaro

+0

@cralfaro它没有必要FK键?请多解释一下 – thenna

您可以在用户表中添加forieng key constraint通过使用简单的内部联接如下

create table TP_Users 
(
....., --- column list here 
constraint FK_TP_Users_RoleId foreign key(RoleId) references TP_Roles(Id) 
) 

然后在相关领域,你可以建立你的查询

select * 
from TP_Users 
inner join TP_Roles on TP_Roles.Id = TP_Users.RoleId 

嗨,这里是一个示例为MySQL数据库语言,如何创建两个表和一个简单的查询来加入它们。

CREATE TABLE TP_USERS (
    ID int(11) NOT NULL, 
    USER_NAME varchar(50), 
    ROL_ID int(11) NOT NULL, 
    PRIMARY KEY (ID), 
    CONSTRAINT `FK_roles` FOREIGN KEY (`ROL_ID`) REFERENCES `TP_ROLES` (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 



CREATE TABLE TP_ROLES (
    ID int(11) NOT NULL, 
    ROL_NAME varchar(50), 
    IS_ACTIVE tinyint(1) NOT NULL DEFAULT '1', 
    PRIMARY KEY (ID) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

在这里,一个简单的查询,您可以加入两个表:

select u.USER_NAME, r.ROL_NAME from TP_USERS u, TP_ROLES r where u.ROL_ID=r.ID 
+0

谢谢,我将添加保持领域 – thenna