2017-08-18 122 views
0

在這裏,我有兩個表committee_colleges和院校。表 結構是這樣的SQL多連接查詢

committee_colleges

committeeCollegeId collegeId committeeMemberId 
    1     2   1 
    2     2   2 
    3     3   2 

我從committeeMember table.And一所高校存儲committeeMemberId可以有多個委員會Members.How我可以WITE一個查詢,顯示僅分配到學院具體委員會成員。 例如,如果通過id = 2的委員會成員登錄,我想通過id = 2,3顯示大學。

在大學表我有這樣的,

collegeId typeName 
    1   AICTE 
    2   NCTE 
    3   NTCS 

這是委員會成員表

committeeMemberId name 
    1     xyz 
    2     abc 

現在我寫這樣的事情,但我知道它錯了,因爲我不知道如何因爲我正在顯示學院的詳細信息,所以請從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 

任何人都可以告訴如何根據其分配給特定委員會顯示學院會員嗎?

+0

預期結果請 – Sami

+0

當我使用memberId = 2登錄時,我需要顯示collegeId = 2,3所院校。基於CommitteeMemberId,我需要顯示各自指定的院校 –

+0

您在提及高校時需要輸出哪些列值但是除了學院校外,你並沒有選擇大學校園桌上的任何東西,你也可以從委員會的大學表中獲得。如果您使用列名稱指定預期輸出,那麼對於能夠回答您的問題的人員會有所幫助。 –

回答

1

你被關閉,你需要的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

希望它幫助。

+0

我想typeName列在output.But我沒有它在committee_colleges表中。它在大學表 –

+0

C. *表示它返回來自C別名表的所有列,這是大學。所以typeName被查詢返回。你需要輸出哪些其他列?我會相應地更新答案。 – Horia

+0

Yea.Only typeName我需要。謝謝你。它工作正常。 –

0

您可以使用下面的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) 
0

試試這個:

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 
0

您可以使用簡單的內連接爲,

如果您想根據MEMBERID使用下面的查詢collegename,

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' 

如果你想學院名稱基於委員姓名,然後使用以下查詢,

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' 

希望它能幫上忙。