我有这样的查询:
SELECT initials, name
FROM employee e, projects p
WHERE e.country = p.country
到目前为止,两个表都使用了国家/地区列的缩写。例如瑞典的"SWE"
和意大利的"ITA"
。
将来,employee表将使用country列的名称。像“瑞典”和“意大利”。
是否可以以某种方式更改我的查询,以便它可以将缩写与名称匹配?与"SWE" = "Sweden"
和"ITA" = "Italy"
一样。
感谢。
答案 0 :(得分:10)
最好有一个自己的国家/地区表和其他引用该表的表。
country table
-------------
id
name
abbreviation
答案 1 :(得分:0)
我认为最好的解决方案是创建第三个表格,将当前缩写与完整的国家/地区名称相匹配。然后,您可以加入这两个表。
CountryTable (countryAbbreviation, countryName)
选择将是这样的:
SELECT initials, name
FROM employee e JOIN countryTable c ON c.countryName = c.country
JOIN projects p ON p.country = c.countryAbbreviation
答案 2 :(得分:0)
虽然我是juergen的解决方案,但另一种解决方案是将两个表改为新格式。
UPDATE employee
SET country = "SWEDEN"
WHERE country = "SWE"
为您拥有的所有国家/地区执行此操作。
答案 3 :(得分:0)
始终在国家/地区表格中,如果国家/地区名称以员工表格中国家/地区的前三个字母开头,那么您可以使用子字符串运算符
SELECT initials, name
FROM employee e, projects p
WHERE upper(substring(e.country,1,3)) = upper(p.country)