mysql – SQL – 理解’JOIN’语法,顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL – 理解’JOIN’语法,顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2723字,纯文字阅读大概需要4分钟。
内容图文
![mysql – SQL – 理解’JOIN’语法,顺序](/upload/InfoBanner/zyjiaocheng/905/df936515e9c849d3aba02ea57f8ff5f9.jpg)
我的任务之一是将访问SQL转换为Oracle SQL.
我在MS访问中运行查询,这是关系表,查询SQL和查询结果:
访问查询SQL
SELECT PUBLISHER.PUBLISHER_CODE, PUBLISHER.PUBLISHER_NAME, BOOK.TITLE, BOOK.TYPE, INVENTORY.BRANCH_NUM, BRANCH.BRANCH_NAME
FROM PUBLISHER INNER JOIN (BRANCH INNER JOIN (BOOK INNER JOIN INVENTORY ON BOOK.BOOK_CODE = INVENTORY.BOOK_CODE) ON BRANCH.BRANCH_NUM = INVENTORY.BRANCH_NUM) ON PUBLISHER.PUBLISHER_CODE = BOOK.PUBLISHER_CODE
WHERE (((BOOK.TYPE)='FIC') AND ((BRANCH.BRANCH_NAME)='Henry on the Hill'))
ORDER BY PUBLISHER.PUBLISHER_NAME;
考虑到MS SQL可能在oracle中工作,我尝试了它:
SQL> SELECT PUBLISHER.PUBLISHER_CODE, PUBLISHER.PUBLISHER_NAME, BOOK.TITLE, BOOK.TYPE, INVENTORY.BRANCH_NUM, BRANCH.BRANCH_NAME
2 FROM PUBLISHER INNER JOIN (BRANCH INNER JOIN (BOOK INNER JOIN INVENTORY ON BOOK.BOOK_CODE = INVENTORY.BOOK_CODE) ON BRANCH.BRANCH_NUM = INVENTORY.BRANCH_NUM) ON PUBLISHER.PUBLISHER_CODE = BOOK.PUBLISHER_CODE
3 WHERE (((BOOK.TYPE)='FIC') AND ((BRANCH.BRANCH_NAME)='Henry on the Hill'))
4 ORDER BY PUBLISHER.PUBLISHER_NAME;
no rows selected
显然这没有用.
所以,我有点切入/粘贴/编辑我的oracle 11g.这是我得到的:
SQL> SELECT PUBLISHER.PUBLISHER_CODE, PUBLISHER.PUBLISHER_NAME, BOOK.TITLE, BOOK.TYPE,
2 INVENTORY.BRANCH_NUM, BRANCH.BRANCH_NAME
3 FROM PUBLISHER
4 inner join BOOK ON PUBLISHER.PUBLISHER_CODE = BOOK.PUBLISHER_CODE
5 inner join INVENTORY on INVENTORY.BRANCH_NUM = BRANCH.BRANCH_NUM
6 inner join BRANCH on INVENTORY.BRANCH_NUM = BRANCH.BRANCH_NUM
7 where BOOK.BOOK_TYPE = 'FIC'
8 and BRANCH.BRANCH_NAME = 'Henry on the Hill';
inner join INVENTORY on INVENTORY.BRANCH_NUM = BRANCH.BRANCH_NUM
*
ERROR at line 5:
ORA-00904: "BRANCH"."BRANCH_NUM": invalid identifier
为什么我得到这个:
第5行的错误:
ORA-00904:“BRANCH”.“BRANCH_NUM”:标识符无效
连接的顺序是否会影响任何事情?
正如你所看到的,我确实从一个表到另一个表.
语法顺序有问题吗? EX:
INVENTORY.BRANCH_NUM = BRANCH.BRANCH_NUM上的内连接BRANCH
要么
BRANCH.BRANCH_NUM = INVENTORY.BRANCH_NUM上的内连接BRANCH
那有关系吗?
Oracle SQL中的连接是否按正确的顺序正确格式化?
如果是这样,为什么不运行?
旁注,这是一个在线课程,虽然讲师非常专注,但我在这里学到了很多东西,从阅读其他帖子,并提出自己的问题.谢谢大家!
解决方法:
您的原始查询加入了INVENTORY,如下所示:
inner join INVENTORY ON BOOK.BOOK_CODE = INVENTORY.BOOK_CODE
试试这个:
select PUBLISHER.PUBLISHER_CODE, PUBLISHER.PUBLISHER_NAME, BOOK.TITLE, BOOK.TYPE, INVENTORY.BRANCH_NUM, BRANCH.BRANCH_NAME
from PUBLISHER
inner join BOOK on PUBLISHER.PUBLISHER_CODE = BOOK.PUBLISHER_CODE
inner join INVENTORY on BOOK.BOOK_CODE = INVENTORY.BOOK_CODE
inner join BRANCH on BRANCH.BRANCH_NUM = INVENTORY.BRANCH_NUM
where BOOK.TYPE = 'FIC'
and BRANCH.BRANCH_NAME = 'Henry on the Hill'
order by PUBLISHER.PUBLISHER_NAME;
内容总结
以上是互联网集市为您收集整理的mysql – SQL – 理解’JOIN’语法,顺序全部内容,希望文章能够帮你解决mysql – SQL – 理解’JOIN’语法,顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。