SQL 一个表中的两个外键来自于同一个表创造的视图

简介: /*****************************************---Geovin Du 塗聚文 締友計算機信息技術有限公司---公司集團有親屬員工顯示介紹人的姓名。一個表中的兩個外鍵是來自於一個同表*****************************************/ --員工表IF EXISTS (select * from sysobj

/*****************************************
---Geovin Du 塗聚文 締友計算機信息技術有限公司
---公司集團有親屬員工顯示介紹人的姓名。一個表中的兩個外鍵是來自於一個同表
*****************************************/

--員工表
IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[Employeetest]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [Employeetest]
GO
create table Employeetest
(
 Eid INT IDENTITY(1,1) PRIMARY KEY,
 Ename nvarchar(30) not null,

)
--插入數據
insert into Employeetest(Ename) values('geovindu')
insert into Employeetest(Ename) values('geovindu1')
insert into Employeetest(Ename) values('geovindu2')
insert into Employeetest(Ename) values('geovindu3')
insert into Employeetest(Ename) values('geovindu4')
insert into Employeetest(Ename) values('geovindu5')

---公司內部介紹人表
IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[Retationtest]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [Retationtest]
GO
create table Retationtest
(
 rid INT IDENTITY(1,1) PRIMARY KEY,
        REkey int not null, --員工(介紹人)外键
        REpkey int not null,--員工(員工)外键
 ReationsName nvarchar(30) not null

)
--插入
insert into Retationtest(REkey,REpkey,ReationsName) values(1,3,'sz')

--函數
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetName]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetName]
CREATE   function  GetName

   @REpkey int --参数
)
returns varchar(500)
as
begin
declare @ename nvarchar(50)
select @ename=Ename from Employeetest where Eid=@REpkey

return @ename
end
GO


--測試
declare @ename nvarchar(50),@REpkey int
set @REpkey=2
select @ename=Ename from Employeetest where Eid=@REpkey
select @ename


--視圖
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
      WHERE TABLE_NAME = 'View_Employeetest')
   DROP VIEW View_Employeetest
GO
create view View_Employeetest
as
select rid AS 'ID',Ename AS '介紹人姓名',dbo.GetName(REpkey) AS '員工姓名', ReationsName AS '關系' from Employeetest,Retationtest
where Employeetest.Eid=Retationtest.REkey
--and Employeetest.Eid=Retationtest.REpkey
GO

--顯示
select * from View_Employeetest

目录
相关文章
|
3月前
|
SQL 存储 数据库
实验4:SQL视图操作与技巧
在SQL数据库管理中,视图(View)是一种虚拟表,它基于SQL查询的结果集创建,并不存储实际数据,而是存储查询定义
|
3月前
|
SQL 存储 数据库
实验4:SQL视图操作技巧与方法
在数据库管理系统中,视图(View)是一种虚拟表,它基于SQL查询的结果集创建,并不实际存储数据
|
3月前
|
存储 SQL 安全
|
3月前
|
SQL 数据库
SQL使用视图的优缺点
SQL使用视图的优缺点
109 0
|
3月前
|
存储 SQL 数据库
使用SQL创建视图和存储过程
使用SQL创建视图和存储过程
29 0
|
5月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
55 1
|
5月前
|
SQL 存储 数据库
创建SQL Server视图
【8月更文挑战第19天】创建SQL Server视图
64 1
|
5月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
155 0
|
6月前
|
SQL 监控 关系型数据库
PolarDB产品使用问题之SQL防火墙怎么拦截没有指定WHERE条件的特定表的SQL语
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。