用于从三个表检索数据的SQL查询

用于从三个表检索数据的SQL查询,sql,Sql,我有三张桌子: SELECT t1.ProjectId, t1.companyUserID, COALESCE(t2.CompanyClientId, 'NA'), COALESCE(t3.CompanyClientName, 'NA') FROM tbl_ProjectsUsers t1 LEFT JOIN tbl_Projects t2 ON t1.ProjectId = t2.ProjectId LEFT JOIN tbl_Company_

我有三张桌子:

SELECT t1.ProjectId,
       t1.companyUserID,
       COALESCE(t2.CompanyClientId, 'NA'),
       COALESCE(t3.CompanyClientName, 'NA')
FROM tbl_ProjectsUsers t1
LEFT JOIN tbl_Projects t2
    ON t1.ProjectId = t2.ProjectId
LEFT JOIN tbl_Company_Client t3
    ON t2.CompanyClientId = t3.CompanyClientId
WHERE t1.companyUserID = <some_value>
tbl\U投影仪用户

ProjectId
companyUserID
ProjectId
CompanyClientId
tbl_项目

ProjectId
companyUserID
ProjectId
CompanyClientId
tbl_公司客户

CompanyClientName
CompanyClientId

如何使用@companyUserID从三个表中检索ProjectID、CompanyClientID和CompanyClientName您可以在三个表之间进行连接:

SELECT t1.ProjectId,
       t1.companyUserID,
       COALESCE(t2.CompanyClientId, 'NA'),
       COALESCE(t3.CompanyClientName, 'NA')
FROM tbl_ProjectsUsers t1
LEFT JOIN tbl_Projects t2
    ON t1.ProjectId = t2.ProjectId
LEFT JOIN tbl_Company_Client t3
    ON t2.CompanyClientId = t3.CompanyClientId
WHERE t1.companyUserID = <some_value>
选择t1.ProjectId,
t1.公司编号:,
合并(t2.CompanyClientId,'NA'),
合并(t3.CompanyClientName,'NA')
来自tbl_投影仪t1
左连接tbl_项目t2
关于t1.projectd=t2.projectd
左加入tbl_公司客户t3
在t2.CompanyClientId=t3.CompanyClientId上
其中t1.companyUserID=

您可以在三个表之间进行联接:

SELECT t1.ProjectId,
       t1.companyUserID,
       COALESCE(t2.CompanyClientId, 'NA'),
       COALESCE(t3.CompanyClientName, 'NA')
FROM tbl_ProjectsUsers t1
LEFT JOIN tbl_Projects t2
    ON t1.ProjectId = t2.ProjectId
LEFT JOIN tbl_Company_Client t3
    ON t2.CompanyClientId = t3.CompanyClientId
WHERE t1.companyUserID = <some_value>
选择t1.ProjectId,
t1.公司编号:,
合并(t2.CompanyClientId,'NA'),
合并(t3.CompanyClientName,'NA')
来自tbl_投影仪t1
左连接tbl_项目t2
关于t1.projectd=t2.projectd
左加入tbl_公司客户t3
在t2.CompanyClientId=t3.CompanyClientId上
其中t1.companyUserID=
希望这有帮助

以下是您请求的解决方案:

Declare @CompanyUserID   int = 10       --no idea what the data type is but i assume an integer.

Select
    u.CompanyUserID
,   p.ProjectID
,   c.CompanyClientID
,   c.CompanyClientName
FROM
            tbl_ProjectUsers  u
    JOIN    tbl_Projects      p   on u.ProjectID = p.ProjectID
    JOIN    tbl_CompanyClient c   on p.CompanyClientID = c.CompanyClientID
WHERE
    u.CompanyUserIDin (@CompanyUserID)
如果更改变量号(10),它将返回不同的结果。我想你把它设为Int,但也可以是字符串 如果它是一个字符串,那么应该使用以下类似的方法

Declare @CompanyUserID varchar(max) = 'UserID'
您将需要更具体地确定连接类型,但在T-SQL中,这对我很有用。我建议这一个使用更高的内部联接或左联接,但是使用justjoin就足够了

发帖-我看到你更新了你的帖子,所以现在它对3个表有意义了希望这有帮助

以下是您请求的解决方案:

Declare @CompanyUserID   int = 10       --no idea what the data type is but i assume an integer.

Select
    u.CompanyUserID
,   p.ProjectID
,   c.CompanyClientID
,   c.CompanyClientName
FROM
            tbl_ProjectUsers  u
    JOIN    tbl_Projects      p   on u.ProjectID = p.ProjectID
    JOIN    tbl_CompanyClient c   on p.CompanyClientID = c.CompanyClientID
WHERE
    u.CompanyUserIDin (@CompanyUserID)
如果更改变量号(10),它将返回不同的结果。我想你把它设为Int,但也可以是字符串 如果它是一个字符串,那么应该使用以下类似的方法

Declare @CompanyUserID varchar(max) = 'UserID'
您将需要更具体地确定连接类型,但在T-SQL中,这对我很有用。我建议这一个使用更高的内部联接或左联接,但是使用justjoin就足够了

帖子-我看到你更新了你的帖子,所以现在它对3个表有意义了