2010-02-18 45 views
1

這個問題的一個抽象是這樣的:基於映射的mysql數據庫連接

我有一個表有一個名爲「國家」的列。存儲的值是國家的名稱,例如,美國,英國..

我有另一個表有一個名爲'country_code'的列。所存儲的值是該國的數字表示,例如, 12,17 ...

如何基於這兩個表執行連接操作(例如內連接)?困難在於國家和country_code具有一對一的映射關係,但並不直接相等。

+1

爲什麼你需要映射?您可以將它作爲表格的屬性放在表格上 – uji 2010-02-18 05:30:27

+0

您需要手動將這兩個表格合併到一個表格中。您沒有足夠的信息以編程方式加入它們。 – Alex 2010-02-18 05:54:49

+0

亞歷克斯是對的,這兩個表應該是一個。 – e4c5 2010-02-18 15:30:23

回答

0

您可以創建一個包含國家和country_code的映射表。

我假設你不能更改包含country_code的表以使用國家/地區的字符串表示形式,或者將int列添加到您的國家/地區表中?

喜歡的東西

country_mappings

  • 國家VARCHAR列
  • COUNTRY_CODE INT列
  • PRIMARY KEY國家,country_mapping

'

SELECT * 
FROM countries c INNER JOIN 
     country_mappings cm ON c.country = cm.country inner join 
     your_other_table yot ON cm.country_code = yot.country_code 
+0

這是'COUNTRY_MAPPINGS'和'COUNTRIES'之間的一對一關係...... – 2010-02-18 05:37:39

+0

這是正確的。正如答案中提到的,我不確定OP是否可以更改原始2表的結構。如果是這樣,它會使這更容易,並且不需要映射表。 – 2010-02-18 05:41:19

+0

可以使用CASE語句將國家添加到現有表中 – 2010-02-18 05:46:20