如果一列对其他表中的另一列无效

时间:2014-12-24 08:16:29

标签: sql sql-server sqlcode

我有3张桌子

Phone Numbers
---------------
WorkerId    CountryIso-Home Intphn Code-Home
1000              USA        1
1001              IND        2
1002              UK         3

------------
Country_ISO
--------------
Country                     Iso
United States of America    USA
India                       IND
United Kingdom              UK

-----------
Country_PhoneCode
-------------------

Country                   PhoneCode
United States of America    1
India                       2
United Kingdom              3

我想编写Validation sql查询 " Int Phone Code-Home对于给定的CountryISO-Home Code无效。

我试过这种方式..

SELECT WorkerId
FROM   PhoneNumbers a,
       Country_PhoneCode b
WHERE  IntPhnCode - Home != (SELECT PhoneCode
                             FROM   Country_PhoneCode i,
                                    Country_ISO j
                             WHERE  i.Country = j.Country) 

请帮帮我

1 个答案:

答案 0 :(得分:0)

试试这个

select WorkerId 
from PhoneNumbers a
join Country_ISO b on b.iso=a.CountryIso-Home
join country_phoneCode c on c.coutry=b.country
where c.PhoneCode <> a.Intphn Code-Home
  • JOIN Country_ISO将工作人员与其国家/地区相匹配
  • JOIN country_phoneCode获取国家/地区的电话号码
  • WHERE子句报告代码不匹配的工作人员

如果您可以更改数据库结构,请将电话代码移至country_ISO,因为它似乎是1对1匹配,因此从逻辑上看,它可以是ISO表的字段