遇到了一个我无法理解的情况。
表A有产品,国家和工厂表B有产品,工厂和城市。
这种情况是这样的:销售预测数据通过工厂从国家一级流向城市一级。我们只在鹿特丹和阿姆斯特丹有工厂。问题是,表A中的工厂必须与表B中的工厂相同。
我必须清理数据的情况,C&D的情况下,工厂在表A是错误的,需要清理。因此,我首先要指出这些错误的纪录:
以下是我加入表A和表B所取得的成就
选择A.Prod,A.country,A.factory,B.Prod,B.factory,B.City从Table1 A,Table2 B where,A.Prod=B.Prod和A.Factory <>B.Factory
当然,我可以使用下面的SQL查找特定的已知错误记录,但是我需要查找所有错误的记录,而不需要指定任何产品或
从Table1 A、Table2 B中选择了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 =‘奥斯陆’
情况1
表A
产品国厂
ProdA瑞士鹿特丹
表B
制品厂城市
ProdA鹿特丹日内瓦
情况2
表A
产品国厂
德国鹿特丹
表B
制品厂城市
ProdB鹿特丹德累斯顿
情况3
表A
产品国厂
ProdC挪威鹿特丹
表B
制品厂城市
ProdC阿姆斯特丹奥斯陆
情况4
表A
产品国厂
ProdD芬兰鹿特丹
表B
制品厂城市
ProdD阿姆斯特丹赫尔辛基
发布于 2015-08-05 11:56:52
据我所知,你对表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');第三步。
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。一旦得到了这个信息,那么不匹配的工厂的条件应该是您正在寻找的记录。
https://stackoverflow.com/questions/31830457
复制相似问题