首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于连接两个表的SQL,但对我的理解来说有点复杂。

用于连接两个表的SQL,但对我的理解来说有点复杂。
EN

Stack Overflow用户
提问于 2015-08-05 10:52:51
回答 1查看 37关注 0票数 0

遇到了一个我无法理解的情况。

表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阿姆斯特丹赫尔辛基

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-05 11:56:52

据我所知,你对表A所列国家的预测,必须是表B中的一个城市,而表A中的国家有一个城市。

所以,在情况1,我们有表A国家=瑞士,表B城市=日内瓦。因为日内瓦在瑞士,所以情况2很好,我们有表A国家=德国,表B城市=德累斯顿,因为德累斯顿在德国。

这给了我们一个如何解决这个问题的线索。

步骤1.为您的预期国家/城市设置一个表

代码语言:javascript
复制
CREATE TABLE COUNTRY_CITY (COUNTRY VARCHAR(60), CITY VARCHAR(60));

步骤2.将预期国家/城市的值插入表中

代码语言:javascript
复制
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');

第三步。

代码语言:javascript
复制
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。一旦得到了这个信息,那么不匹配的工厂的条件应该是您正在寻找的记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31830457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档