Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于映射的mysql数据库连接_Mysql - Fatal编程技术网

基于映射的mysql数据库连接

基于映射的mysql数据库连接,mysql,Mysql,问题的抽象如下: 我有一个表有一列叫做“国家”。存储的值是国家名称,例如美国、英国 我有另一个表,其中有一列名为“country_code”。存储的值是国家的数字表示,例如12、17 如何基于这两个表执行连接操作(例如内部连接)?困难在于country和country_代码具有一对一的映射,但并不直接相等。您可以创建一个包含country和country_代码的映射表 我假设您不能将包含country_代码的表更改为使用country的字符串表示形式,或者将int列添加到您的countries表

问题的抽象如下:

我有一个表有一列叫做“国家”。存储的值是国家名称,例如美国、英国

我有另一个表,其中有一列名为“country_code”。存储的值是国家的数字表示,例如12、17


如何基于这两个表执行连接操作(例如内部连接)?困难在于country和country_代码具有一对一的映射,但并不直接相等。

您可以创建一个包含country和country_代码的映射表

我假设您不能将包含country_代码的表更改为使用country的字符串表示形式,或者将int列添加到您的countries表中

差不多

国家/地区映射

  • country varchar列
  • 国家/地区代码int列
  • 主要关键国家/地区,国家/地区地图
"


为什么需要映射?您可以将其作为表的属性放在表中。您需要手动将这两个表合并到一个表中。您没有足够的信息以编程方式连接它们。Alex是对的,这两个表应该是一个。这将是
国家/地区映射
国家/地区
之间的一对一关系……这是正确的。如回答中所述,我不确定OP是否可以改变原来2个表的结构。如果是这样的话,这将使这更容易,并且不需要映射表。可以使用CASE语句将国家添加到现有表中如果您在查询中引用CASE语句,这可能是一个非常大的CASE语句。我认为,像这样的硬编码可能并不总是可行的方法。看一看,你可以把它放在一个视野里。坏数据模型意味着黑客:)
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