[英]Return Complex data types in SQL server
我有兩個表,如下:一個是部門,另一個是員工。 每個部門都有幾名員工。 這是表定義:
Create table [dbo].[Department]
(
ID int not null,
Name varchar(100) not null,
revenue int not null
)
Create table [dbo].[Employee]
(
ID int not null,
DepartmentID int not null,--This is foreign key to Department
Name varchar(100) not null,
Level int not null
)
現在,我想查詢所有帶員工的部門,如果部門收入大於某個值。 因此結果將包含部門列表。 對於每個部門,還應包含員工列表。
在我們的客戶端中,我們使用c#檢索數據,這是接口:
public List<Department> GetHighRevenueDepartmentWithEmployee(int revenueBar)
{
throw new NotImplementedException();
}
我的問題是:是否可以在一個查詢/存儲過程中獲得復合結果。 可以使用一個存儲過程多次查詢,但是必須一次將全部數據返回給客戶端。(這是性能原因)如何實現呢? 我知道我們可以在這里定義表值類型,但是我不能定義其中包含另一個表值作為列的表值類型。
通常,您只需要返回包含兩個表中所有列的結果集:
SELECT
d.ID as DepartmentID,d.Name as DepartmentName,d.Revenue,
e.ID as EmployeeID,e.Name as EmployeeName,e.Level
FROM
Department d
inner join
Employee e
on d.ID = e.DepartmentID
WHERE
d.revenue > @value
ORDER BY
d.ID
現在,部門返回的數據將重復多次-每位員工一次。 但這很好。 只需對每個新部門使用第一行,而在其余行中將其忽略。 那將是結果集的第一行,以及DepartmentID
與上一行不同的任何行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.