[英]SQL Multiple Joins Query
在这里,我有两个表Committee_Colleges和Colleges。 表的结构是这样的
committee_colleges
committeeCollegeId collegeId committeeMemberId
1 2 1
2 2 2
3 3 2
我从委员会成员表中存储了委员会成员编号。一个学院可以有多个委员会成员。我如何查询以仅显示分配给特定委员会成员的学院。 例如,如果id = 2的CommitteeMember已登录,我想显示id = 2,3的大学。
在大学的桌子上我有这样的感觉
collegeId typeName
1 AICTE
2 NCTE
3 NTCS
这是委员会成员表
committeeMemberId name
1 xyz
2 abc
现在我正在写这样的东西,但是我知道它是错误的,因为我不知道如何从College表中获取它,因为我正在显示College详细信息。
SELECT cc.committeeCollegeId as committeeCollegeId,
c.collegeId as collegeId,
cc.committeeMemberId as committeeMemberId
FROM committee_college as cc
left outer join College as c
on cc.collegeId = c.collegeId
where cc.committeeMemberId=:committeeMemberId
order by cc.committeeCollegeId asc
任何人都可以根据对特定委员会成员的分配来告诉他们如何显示大学吗?
您接近了,您需要INNER JOIN
而不是LEFT JOIN
:
SELECT DISTINCT C.typeName --<<== put here all the columns that you want in output
FROM committee_colleges CC
INNER JOIN college C
ON C.collegeId = CC.collegeId
WHERE CC.committeeMemberId = 2 --<<== your input parameter
编辑:添加DISTINCT
希望能帮助到你。
您可以使用下面的sql语句进行相同的操作
DECLARE @committeeMemberId INT = 2 -- Id of Committee member
;WITH CTE_MemberCommittee AS
(
SELECT CollegeId
FROM committee_colleges
WHERE committeeMemberId = @committeeMemberId
)
SELECT collegeId, typeName
FROM college
WHERE collegeId IN (SELECT CollegeId FROM CTE_MemberCommittee)
尝试这个:
DECLARE @LoginCommitteeMemberId INT=2
SELECT t2.Name AS MemberName,
t3.TypeName AS CollageName
FROM committee_college t1
INNER JOIN Committee_Member t2
ON t1.committeeMemberId = t2.committeeMemberId
INNER JOIN College as t3
ON t1.collegeId = t3.collegeId
WHERE t1.committeeMemberId = @LoginCommitteeMemberId
您可以为此使用简单的内部联接 ,
如果您希望基于memberId的大学名称,请使用以下查询,
select a.collegeid,a.typeName from
college a, committee_colleges b, committe_member c
where a.collegeid = b.collegeid and
b.committeememberid = c.committeeMemberId
and c.committeeMemberId = '2'
如果您希望基于committemember名称的大学名称,则使用以下查询,
select a.collegeid,a.typeName from
college a, committee_colleges b, committe_member c
where a.collegeid = b.collegeid and
b.committeememberid = c.committeeMemberId
and c.Name = 'xyz'
希望它会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.