Stored-Procedures

3表內連接

  • April 8, 2019

我有 3 個表:tblUser、tblRole、tblPage。

以下是表格中的數據:

tbl使用者

userID: 1 (Primary Key)

userName: Bob

roleID: 1 (Foreign Key)

tbl角色

角色ID:1 (主鍵)

角色名稱:管理員

頁面ID:1 (外鍵)

頁面

pageID: 1 (Primary Key)

pageName: AdminPage

pageURL: https://AdminPage

我想知道一個場景的儲存過程……

當我輸入名字“Bob”時,我應該得到pageURL“ https://AdminPage …”

謝謝你。

您的問題沒有指定特定的 RDBMS(Oracle、SQL Server 等),但這是使用 SQL Server 的解決方案

--demo setup
drop table if exists #tblUser
create table #tblUser
(
userID int
,userName varchar(30)
,roleID int
)
drop table if exists #tblRole
create table #tblRole
(
roleID int
,roleName varchar(30)
,pageID int
)
drop table if exists #tblPage
create table #tblPage 
(
pageID int
,pageName varchar(30)
,pageURL varchar(100)
)

insert into #tblUser(userID, userName, roleID) values(1,'Bob',1)
insert into #tblRole(roleID, roleName, pageID) values(1,'Admin',1)
insert into #tblPage(pageID, pageName, pageURL) values(1,'AdminPage',' https://AdminPage')
go
----------------
--create the stored procedure
USE [Test]
GO
drop PROCEDURE if exists [dbo].[GetPageUrl] ;
go
create PROCEDURE [dbo].[GetPageUrl] @UserName varchar(30)
AS
BEGIN
SELECT p.pageURL
FROM #tblUser u
JOIN #tblRole r
   ON r.roleID = u.roleID
JOIN #tblPage p
   ON p.pageID = r.pageID
where u.userName = @UserName
END
go
--Test the stored procedure
exec dbo.GetPageUrl @userName = 'Bob'

| pageURL |             |
|---------|-------------|
| https   | //AdminPage |

引用自:https://dba.stackexchange.com/questions/234172