2016-04-13 98 views
2

我在SQL Server中的查詢爲:如何多JOIN在SQL Server

SELECT MD.Author_ID, MD.CoAuthor_ID, MD.Venue_ID, A2P.pid [Paper_ID], 
     P.abstract_research_area_category_id [Paper_Category_ID], 
     MD.Year 
FROM Merged_Data MD 
JOIN sub_aminer_author2paper A2P ON MD.Author_ID = A2P.aid AND 
            MD.Year  = A2P.p_year AND 
            MD.Venue_ID = A2P.p_venue_vid 
JOIN sub_aminer_paper P   ON MD.Venue_ID = P.p_venue_vid AND 
            MD.Year  = P.p_year 
WHERE MD.Author_ID = 677 

雖然我無法得到想要的結果,因爲無法與sub_aminer_paper加入A2P.pid提取[Paper_Category_ID]

我如何加入A2P.pidsub_aminer_paperpid匹配,並提取[Paper_Category_ID]sub_aminer_paper有場pid

+0

你能解釋一下這個查詢的問題?你有錯誤嗎?錯誤的結果? – Mureinik

+0

@Mureinik不,我只想從'sub_aminer_paper'加入'pid'和'A2P.pid',我已經通過加入'sub_aminer_author2paper'來提取'Paper_Category_ID',因爲它只存在於'sub_aminer_paper' – maliks

+0

你能在WHERE子句中添加'A2P.pid = p.pid',它會導致任何問題? – Arulkumar

回答

1

根據comment它解決了這個問題。所以同樣的,我提供了這個問題的答案:

SELECT MD.Author_ID, MD.CoAuthor_ID, MD.Venue_ID, A2P.pid [Paper_ID], 
     P.abstract_research_area_category_id [Paper_Category_ID], 
     MD.Year 
FROM Merged_Data MD 
JOIN sub_aminer_author2paper A2P ON MD.Author_ID = A2P.aid AND 
            MD.Year  = A2P.p_year AND 
            MD.Venue_ID = A2P.p_venue_vid 
JOIN sub_aminer_paper P   ON MD.Venue_ID = P.p_venue_vid AND 
            MD.Year  = P.p_year 
WHERE MD.Author_ID = 677 AND A2P.pid = P.pid 

添加在該A2P.pid = P.pid WHERE子句將解決這個問題。

1

試試這個,

SELECT MD.Author_ID, MD.CoAuthor_ID, MD.Venue_ID, A2P.pid [Paper_ID], 
      P.abstract_research_area_category_id [Paper_Category_ID], 
      MD.Year 
    FROM Merged_Data MD 
    INNER JOIN sub_aminer_author2paper A2P 
    ON (MD.Author_ID = A2P.aid AND 
     MD.Year  = A2P.p_year AND 
     MD.Venue_ID = A2P.p_venue_vid) 
    INNER JOIN sub_aminer_paper P   
    ON (A2P.pid  = P.pid 
     MD.Venue_ID = P.p_venue_vid AND 
     MD.Year  = P.p_year) 
    WHERE MD.Author_ID = 677