2011-09-07 48 views
-1

由於我放置了一個新項目,我在工作中幾個月沒有做任何查詢,所以我完全在如何執行以下操作:SQL:將來自連接表的結果合併到查詢中的一個字段中

我有一個名爲「eJournals」的表,第二個名爲「providerJoins」,第三個名爲「providers」。

的字段如下:

電子期刊

  1. eJournalID
  2. 標題

providerJoins

  1. joinID
  2. providerID
  3. eJournalID

提供商

  1. providerID
  2. 的providerName

我的問題是,哪些需要在查詢中偶然得到的東西是這樣的:

eJournalID  Title   providerName 
1    blah   providerblah 
2    blah2   providerblah2 
3    blah3   providerblah3 
etc.... 

我敢肯定,解決方案會讓我打我的腦袋,說:「哦,是啊,但是......但是......就像我說過的,我幾個月來一直沒有使用sql。

+1

電子期刊與提供者之間的關係是什麼?它是joinID = eJournalID? –

+0

對不起,忘記了表之間的鏈接... providerJoins中有eJournalID。 eJournals.eJournalID = providerJoins.eJournalID和providerJoins.providerID = providers.providerID。 – Brds

+0

ok - 看到我的答案,然後... –

回答

0
SELECT e.eJournalID, e.Title, p.providerName 
FROM eJournals e 
INNER JOIN providerJoins j ON j.joinID = e.eJournalID 
INNER JOIN providers p ON p.providerID = j.providerID 

這應該做到這一點

+0

關係字段不是joinID - 它的eJournalID。 –

+0

我認爲這是錯誤的; j.joinId與電子期刊表沒有關係。 –

+0

n.title? providername p? – Brds

0

你必須有電子期刊和providersJoins表之間的一些領域的關係,使這項工作 - 否則就沒有辦法說哪的providerName與哪個電子期刊。

鑑於我們之間的關係eJournalID,下面應該工作...

 

select e.eJournalID, e.Title, p.providerName 
from eJournals e, providerJoins pj, providers p 
where e.eJournalID = pj.eJournalID 
and pj.providerID = p.providerID 
 
+0

我沒有downvote,但是,呃。爲什麼隱式聯接? –

+0

舊學校:)我仍然認爲它比INNER JOINS更可讀 –

+0

從downvoter一些評論將不勝感激... –

1

你應該能夠做到如此簡單的東西:

SELECT J.eJournalID, J.Title, P.ProviderName FROM eJournals J 
     JOIN ProviderJoins PJ ON PJ.eJournalID = J.eJournalID 
     JOIN Providers P ON P.ProviderId = PJ.ProviderID 
+0

不,列出多個結果爲每個電子期刊,如果他們有多個提供者:( – Brds

+1

啊,我didn如果有一個說法,一個ejournalId有三個不同的提供者,那麼應該如何顯示它們? –

+0

@Brds:當期刊有多個提供者時,你想要做什麼?選擇一個提供者?連接所有提供者在一個列中? –

0

我想你想的東西像這個?

SELECT 
    e.eJournalID, 
    e.Title, 
    p.ProviderName 
FROM 
    eJournals e 
    INNER JOIN providerJoins pj ON e.eJournalID = pj.eJournalId 
    INNER JOIN providers p ON pj.providerId = p.providerId 
+0

如果他們有幾家提供商,仍然會列出每個日記幾次 – Brds

0

嘗試:

SELECT DISTINCT e.eJournalID, e.Title, p.providerName 
FROM eJournals AS e JOIN providerJoins AS pj ON e.eJournalID = pj.eJournalID 
JOIN providers AS p ON pj.providerID = p.providerID 

注: 「不同的」 應刪除結果的任何重複的行。

+0

很多類似的答案在這裏:-)。 SQL很受歡迎! –

+0

就像其他人一樣,爲相同的電子期刊返回多個結果。 – Brds

+0

我在查詢中添加了「DISTINCT」,這有助於刪除重複項嗎?如果沒有幫助,將需要看到你得到的結果。 –

相關問題