【问题标题】:How to Refer Foreign Key table to refer another table?如何引用外键表来引用另一个表?
【发布时间】:2016-11-06 01:09:36
【问题描述】:

我有两个表和两个表名,如下所示

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其引用表TP_Roles列名id
如何建立关系以及如何使用查询链接两个表?

【问题讨论】:

  • 使用由 roleId 连接的表来通信两个表
  • @cralfaro 不需要 Fk 键?请多解释一下
  • 哪个数据库 MSSQL 或 MYSQL
  • @thenna 我添加了一个响应,其中包含您在 MySql 数据库引擎上需要的一个可能示例,我在示例中没有使用您的所有字段,请添加它们

标签: mysql sql-server database sql-server-2012


【解决方案1】:

您可以在您的用户表中添加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

【讨论】:

    【解决方案2】:

    您好,这里是 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
    

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 2018-10-13
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多