2013-05-03 37 views
1

我試圖做一個SELECT查詢獲取繪畫和雕塑的標題和相應的藝術家ID。SQL加入:同類表

這裏是架構:

Paintings(paintingID, title, painterID) p

Sculptures(scluptureID, title, sculptorID) s

我想我必須使用一個JOIN,但我不知道加入什麼就沒有得到奇怪的結果。如果我加入ON p.painterID=s.sculptorID,那麼我只能得到既是畫家又是雕塑家的藝術家的成果。我想獲得所有的雕塑和繪畫,把它們當作「藝術」,把畫家和雕塑當作「藝術家」,這樣每一行都會包含所有的價值觀,填充另一張表中不存在的列,其中NULL s (該模式在現實生活中有點大)。我該怎麼去做/我錯過了什麼?

+1

你應該改正'sculptures'爲'sculptures'。這也是[多對多關係](http://sqlrelationship.com/many-to-many-relationship/),你應該閱讀它。您需要使用[Union](http://msdn.microsoft.com/en-CA/library/ms180026.aspx) – phadaphunk 2013-05-03 20:49:05

回答

4

你不需要加入,你需要使用一個UNION查詢:

SELECT title, painterID artistID 
FROM Paintings 
UNION ALL 
SELECT title, sculptorID artistID 
FROM Sculptures 

這將選擇從Sculptures表從Paintings表中的所有繪畫和雕塑的所有。 painterIDsculptorID都將具有artistID的別名。

+0

'{...}',因爲這是'多對多關係'。 – phadaphunk 2013-05-03 20:51:19