SQL JOIN查询 - 困惑

时间:2010-11-25 11:24:46

标签: sql join

我正和朋友一起开展货币转换服务,但在项目结束时遇到了一个大问题。

我们有3个表,currencys(包含货币代码,例如'GBP',货币名称,当前汇率和时间戳),国家/地区(包含国家代码,例如'US'及其所指的位置),currency_country(包含国家代码和货币代码,这些是复合主键,例如样本条目如下:FR - EUR,IR - EUR,US - USD,GB - GBP,因此这个列出所有国家及其相关货币。)

我被告知使用JOIN链接表格,我需要抓住代码所关联的所有国家/地区以及国家/地区表格中的位置。

我很遗憾没有SQL经验,只有基本的查询,数据库理论不是一个强点。

任何建议,帮助,欢迎指示。

4 个答案:

答案 0 :(得分:2)

JOINS基本上将两个或多个相关表连接在一起以形成更大的表。如果您使用过Excel,那就像超级VLOOKUPJOIN语法扩充了FROM子句。您指定JOIN类型(INNERLEFT OUTERRIGHT 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 

答案 1 :(得分:0)

我假设您的表之间具有参照完整性,这样没有Country行和至少一个Currency行就不存在Currency_Country行。在这种情况下,不需要使用Currency表。

要查找具有相关货币的所有国家/地区,请使用:

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

答案 2 :(得分:0)

你应该阅读简单的DB / SQL内容,这一切都很好,很好地从这里得到答案但是在最短的时间你应该理解如何做联接表的事情

这对你开始非常好:http://www.sql-tutorial.net/SQL-tutorial.asp

无论如何,你的SQL:

[编辑 - 2个帖子打败了我;)

答案 3 :(得分:0)

如果您在货币和国家/地区之间存在多对多关系,则只需要currency_country表。是这样的吗?否则,您只需要一个Currencies表和一个包含该货币ISO代码的Countries表。 (请注意,某些货币没有与之关联的国家/地区)