2010-11-25 129 views
1

我正在與一位朋友一起工作貨幣轉換服務,但在項目結束時已經遇到了一個大問題。 (包含貨幣代碼,例如'GBP',貨幣名稱,當前匯率和時間戳),國家(包含國家代碼,例如'US'及其指向的位置),currency_country(包含國家/地區代碼和貨幣代碼,這些是複合主鍵,例如,樣本條目將如下所示:FR - EUR,IR - EUR,US - USD,GB - GBP,因此本文列出了所有國家及其相關貨幣)。SQL JOIN查詢 - 困惑

我被告知使用JOIN鏈接表,我需要抓住代碼所關聯的所有國家以及來自國家/地區表的位置。

我很少或沒有經驗的SQL悲哀,只有基本的查詢和數據庫理論不是一個強項。

任何意見,幫助,指針歡迎。

+1

數據庫設計是您的應用程序的基礎。在糟糕的數據庫設計上構建應用程序就像在地下室的圓形地面上建造一個方形房屋:浪費時間和金錢。所以三重檢查那個階段。 – 2010-11-25 11:42:47

回答

2

JOINS基本上將兩個或多個相關的表連接在一起做出更大的表。如果您使用過Excel,那就像是超級VLOOKUPJOIN語法擴充了您的FROM子句。您指定JOIN類型(INNER,LEFT OUTER,RIGHT OUTER +其他類型和簡寫)和ON條件(其中第一個表中的行將匹配到第二個表)。

鑑於你的三個表,你應該能夠在所有你想要的東西,如信息帶來:

SELECT countries.name 
     , currency_countries.country_code 
     , currencies.name 
     , currency_countries.currency_code 
     , currencies.current_rate 
    FROM currency_country 
     INNER JOIN currencys 
     ON currency_country.currency_code = currencys.code 
     INNER JOIN countries 
     ON currency_country.country_code = countries.code 
0

我假設你有你的表之間的參照完整性,使得Currency_Country行不存在沒有國家行和至少一個貨幣行。在這種情況下,貨幣表不需要被使用。

要找到所有相關的貨幣的國家,使用方法:

SELECT Countries.country_code, location 
FROM Countries INNER JOIN Currency_Country 
ON Countries.country_code = Currency_Country.country_code 
0

您應該簡單DB/SQL的東西讀了,這一切都很好,從這裏,但在裸分鐘,你也得到了答案應該瞭解如何做的事情一樣連接表

這看起來很不錯,開始你了:反正http://www.sql-tutorial.net/SQL-tutorial.asp

,你的SQL:

[編輯 - 2個帖子打敗了我的SQL;]]

0

如果你有貨幣和國家之間的多對多關係,你只需要一個currency_country表。是這樣嗎?否則,您只需要一張貨幣表和一張包含貨幣ISO代碼的國家/地區表。 (請注意,一些貨幣沒有與他們相關的國家)