SQL - 如何编写查询以根据 ID 检索名称,其中名称和 ID 存储在不同 table

SQL - How to write a query to retrieve names based on IDs where names and IDs are stored in different table

我正在使用 asp.net

开发 Web 应用程序

我有三个表,其中包含以下字段:

  1. 用户详细信息:


    用户 ID(pk) |名字 |姓氏

  2. 项目:


    项目ID |项目名称 |创建者 ID |预算所有者 ID | SpocID |最后一个用户 ID |状态 ID

    注意:所有ID均指上表和下表中的userID和statusID。

3.Statuses:


状态ID |状态描述

  1. 资源分配(更新):


    分配ID |项目编号 | UserID(项目映射到谁)。

我需要以这种方式在网格视图中显示项目的详细信息:

项目ID |项目名称 |创建者名称 |预算所有者姓名 | SpocName 姓氏 |状态描述

我想在 gridview 中显示其 ID 的相应名称(名字+姓氏)。

如何使用 SQL 或 linq to entities 编写它?。请帮忙

更新:第二个查询: 我想根据他分配到的项目显示所选资源的相同详细信息。

您需要为每个需要名称或描述的列使用 JOIN

SELECT 
    proj.ProjectID, 
    proj.ProjectName, 
    created.FirstName + ' ' + created.LastName as CreatedByName, 
    budget.FirstName + ' ' + budget.LastName as BudgetOwnerName, 
    spoc.FirstName + ' ' + spoc.LastName as SpocName, 
    lastUsr.FirstName + ' ' + lastUsr.LastName as LastUserName, 
    status.StatusDescription
FROM projects proj
    INNER JOIN UserDetails created ON proj.CreatedByID = created.UserID
    INNER JOIN UserDetails budget ON proj.BudgetOwnerID = budget.UserID
    INNER JOIN UserDetails spoc ON proj.SpocID = spoc.UserID
    INNER JOIN UserDetails lastUsrON proj.LastUserID = lastUsr.UserID
    INNER JOIN Statuses status ON  proj.StatusID = status.StatusID

以上查询假定您的所有 ID 字段将始终填充数据。如果其中任何一个可以是NULL,则应将INNER JOIN更改为LEFT JOIN