有一种情况有点超出我的理解。
表A包含产品,国家和工厂 表B包含产品,工厂和城市。
这种情况是销售预测数据从国家/地区级别经过工厂流向城市级别。我们只在鹿特丹和阿姆斯特丹设有工厂。问题是表A中的工厂需要与表B中的工厂相同。
我必须清理表A中的工厂错误并需要清洁的情况C& D。因此,我首先要确定这些错误的记录:
这是我到目前为止加入表A和B
所得到的选择A.Prod,A.country,A.factory,B.Prod,B.factory,B.City来自Table1 A,Table2 B where and A.Prod = B.Prod and A.Factory&lt ;> B.Factory
当然我可以通过使用下面的SQL找到一个特定的已知错误记录,但我需要查找所有错误记录而不指定任何产品或
从表1 A,表2B中选择A.Prod,A.country,A.factory,B.Prod,B.factory,B.City,其中A.Prod = B.Prod和A.Factory< > B.Factory 和A.Country ='挪威'和A.Factory ='鹿特丹'和B.City ='奥斯陆'
产品国家工厂
ProdA瑞士鹿特丹
产品工厂城 ProdA鹿特丹日内瓦
产品国家工厂
Prod Germany Rotterdam
产品工厂城 ProdB鹿特丹德累斯顿
产品国家工厂
ProdC Norway Rotterdam
产品工厂城 ProdC Amsterdam Oslo
产品国家工厂
ProdD芬兰鹿特丹
产品工厂城 ProdD Amsterdam Helsinki
答案 0 :(得分:0)
根据我的理解表A中对国家的预测必须是表B中的一个城市,该表存在于表A中的国家。
所以,在情况1中,我们有 表A国家=瑞士,表B城市=日内瓦。 由于日内瓦在瑞士,这很好 在情况2中,我们有 表A国家=德国,表B城市=德累斯顿 由于德累斯顿在德国,这很好。
这为我们提供了解决问题的线索。
步骤1.为您的预期国家/城市设置表格
CREATE TABLE COUNTRY_CITY (COUNTRY VARCHAR(60), CITY VARCHAR(60));
步骤2.将预期国家/城市的值插入表
INSERT INTO COUNTRY_CITY(COUNTRY,CITY) VALUES('GERMANY','DRESDEN');
INSERT INTO COUNTRY_CITY(COUNTRY,CITY) VALUES('SWITZERLAND','GENEVA');
INSERT INTO COUNTRY_CITY(COUNTRY,CITY) VALUES('NORWAY','OSLO');
INSERT INTO COUNTRY_CITY(COUNTRY,CITY) VALUES('FINLAND','HELSINKI');
第3步。
select A.Prod,A.country, A.factory, B.Prod, B.factory, B.City,
COUNTRY_CITY.CITY
from
Table1 A
INNER JOIN Table2 B ON A.Prod=B.Prod
INNER JOIN COUNTRY_CITY ON A.COUNTRY = COUNTRY_CITY.COUNTRY
where COUNTRY_CITY.CITY = B.city and A.Factory <> B.Factory
因此,在第3步中,我们向数据库提供哪个城市属于哪个国家的知识,以便我们可以从表A到表B进行连接。一旦得到,那么不匹配工厂的条件应该是您正在寻找的记录