簡體   English   中英

在SQL Server中返回復雜數據類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM