首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熟悉SQL,需要一些查询建议。

熟悉SQL,需要一些查询建议。
EN

Stack Overflow用户
提问于 2016-10-02 01:57:30
回答 2查看 73关注 0票数 0

我最近开始学习SQL,但似乎无法理解如何创建来自多个表/关系的相关结果的SQL语句。

给定以下模式:

代码语言:javascript
复制
Account(accNumber, balance, type)
Branch(BSB, phone, streetAddress, town)
registered(accNumber*, BSB*)

我试图制定一些产出:列出所有的accNumber注册的一个特定的BSB (123),并显示其上市城镇(悉尼)。

对于第一个查询,我尝试了以下语句:

代码语言:javascript
复制
SELECT accNumber, BSB, town
FROM ACCOUNT, BRANCH
WHERE BSB = 123;

然而,即使它们不属于BSB,我也会列出每个帐户,所以我尝试:

代码语言:javascript
复制
SELECT accNumber, BSB, town
FROM ACCOUNT, BRANCH
WHERE BSB = 123
AND Town = 'Sydney'
AND account.accNumber=registered.accNumber
AND branch.bsb=registered.bsb;

这一次,我得到了明确定义的列,因为它们在“已注册”表中具有相同的名称。

我尝试在select状态中创建别名,即accNumber作为ACCOUNT_NUMBER等,但仍然得到了模糊定义的错误。

我只试着列出注册表中的内容,但是没有得到城镇名称,只有accNumber和BSB作为外键传入。

我似乎无法理解如何从其他表中提取数据并正确地显示它们,并且非常感谢您的任何建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-02 02:07:32

这听起来像是一个通用的SQL问题。对于您的查询,下面是您要查看的内容:

代码语言:javascript
复制
select a.account_number
  from account a, brance b, registered r
  where a.account_number = r.account_number and
        a.bsb = b.bsb and
        b.bsb = 123;

这将从BSB 123中的帐户表中获得所有帐号。当您有多个具有相同列的表时,您需要告诉Oracle (以及相关的任何数据库)您所指的"account_number“列(否则,由于有多个包含列account_number的表,所以它是模糊的)。

SQL是关于表和联接的。有时,您必须连接多个表才能得到所需的内容,如上面所示。如果您不像最初那样加入表,您将得到一个“交叉产品”,这不是您想要的。

我知道这很“轻”,但希望从上面对你的问题的回答中,你会对如何做到这一点有所了解。

如果你有问题的话,我很乐意帮你。在某种程度上,每个人对SQL都很陌生。别为此感到难过。这需要练习,然后就变得容易多了。

-Jim

票数 0
EN

Stack Overflow用户

发布于 2016-10-02 02:52:29

这也许能帮你开始。

代码语言:javascript
复制
SELECT a.ccNumber, b.BSB, c.town
FROM ACCOUNT as a
inner join registered as b on b.accNumber=a.accNumber
inner join BRANCH as c on c.bsb = b.bsb 
WHERE b.BSB = 123
  AND c.Town = 'Sydney'  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39813151

复制
相关文章

相似问题

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