ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询

SQL Server 表的高级查询-多表连接和子查询。

1,ylb:表的高级查询-多表连接和子查询 返回顶部
  1. --================================
  2. -- ylb:表的高级查询- 多表连接和子查询
  3. -- pubs库的练习
  4. -- 17:18 2011/12/13
  5. --================================
  6. use pubs
  7. go
  8. select * from authors
  9. select * from titles
  10. --select * from titleauthor
  11. select * from publishers
  12. --1,查看出版社名称,书名称
  13. go
  14. --2,查看出版社名称,出版社出书预付款总额
  15. select pub_name,SUM(advance) '预付款总额' from publishers p
  16. inner join titles t on p.pub_id=t.pub_id
  17. group by pub_name
  18. go
  19. --3,查看出版社名称,出版社出书预付款最大值,单价最小值
  20. select pub_name,max(advance) '付款最大值',MIN(price) '单价最小值' from publishers p
  21. inner join titles t on p.pub_id=t.pub_id
  22. group by pub_name
  23. go
  24. --4,查看出版社编号,出版社名称,书名称,书单价,作者编号
  25. select * from publishers p
  26. inner join titles t on p.pub_id=t.pub_id
  27. inner join titleauthor ta on t.title_id=ta.title_id
  28. go
  29. --5,查看出版社编号,书总价,书最高价格,作者总数
  30. ---5分析
  31. --这本书(TC7777)有两个作者(472-27-2349,672-71-3249
  32. --这个作者(486-29-1786 出了两本书(PC9999,PS7777
  33.  
  34. --5_1,错的
  35. select p.pub_id,SUM(price),MAX(price),count(title_id) from publishers p
  36. inner join titles t on p.pub_id=t.pub_id
  37. group by p.pub_id
  38. go
  39. --5_2,正确的
  40. select p.pub_id,SUM(price),MAX(price),count(distinct au_id) from publishers p
  41. inner join titles t on p.pub_id=t.pub_id
  42. inner join titleauthor ta on t.title_id=ta.title_id
  43. group by p.pub_id
  44. go
  45.  
  46. --6,查看出版社编号,书总价,书最高价格,要求作者总数大于9的信息
  47. select pub_id,SUM(price),MAX(price) from titles t
  48. inner join titleauthor ta on t.title_id=ta.title_id
  49. group by pub_id
  50. having count(distinct au_id)>9
  51. go
  52.  
  53. --7,查找书名称,书编号,作者编号
  54.  
  55. go
  56. --8,查找书名称,作者数量
  57. select title,COUNT(au_id) '作者数量' from titles t
  58. inner join titleauthor ta on t.title_id=ta.title_id
  59. group by title
  60. go
  61. --9,查找商业书的所有书名称,作者数量,
  62. select title,COUNT(au_id) '作者数量' from titles t
  63. inner join titleauthor ta on t.title_id=ta.title_id
  64. where type='business'
  65. group by title
  66. go
  67. --10,查找商业书的所有作者姓名,作者编号,作者城市
  68. select * from titles t
  69. inner join titleauthor ta on t.title_id=ta.title_id
  70. inner join authors a on ta.au_id=a.au_id
  71. where type='business'
  72. go
  73. --11,在CA州的作者出的书,书名,书单价总和,
  74. --书最高预付款,书的最低价格。
  75. select title,SUM(price),MAX(advance),MIN(price) from titles t
  76. inner join titleauthor ta on t.title_id=ta.title_id
  77. inner join authors a on ta.au_id=a.au_id
  78. where state='CA'
  79. group by title
  80. go
  81. --12,和商店的同一州作者出的书,书名,书单价总和,
  82. --书最高预付款,书的最低价格。
  83. --12_1,
  84. select au_id from authors a
  85. where state in(select state from stores where state=a.state)
  86. go
  87. --12_2,
  88. select distinct title_id from titleauthor ta
  89. where au_id in(select au_id from authors a
  90. where state in(select state from stores where state=a.state))
  91. go
  92. --12_3,
  93. select * from titles t
  94. where title_id in(select distinct title_id from titleauthor ta
  95. where au_id in(select au_id from authors a
  96. where state in(select state from stores where state=a.state)))
  97. go
  98. --12_4,结论
  99. select title,SUM(price),MAX(advance),MIN(price) from titles t
  100. where title_id in(select distinct title_id from titleauthor ta
  101. where au_id in(select au_id from authors a
  102. where state in(select state from stores where state=a.state)))
  103. group by title
  104. go
  105. --13,和商店的同一州作者出的书,书名,书单价总和,
  106. --书最高预付款,书的最低价格,要
  107. --求书必须大于所有商业书的价格。
  108. --13_1,
  109. select * from titles
  110. where price>(select max(price) from titles where type='business')
  111. go
  112. --13_2,总结
  113. select title,SUM(price),MAX(advance),MIN(price) from titles t
  114. where title_id in(select distinct title_id from titleauthor ta
  115. where au_id in(select au_id from authors a
  116. where state in(select state from stores where state=a.state)))
  117. and price>(select max(price) from titles where type='business')
  118. group by title
  119. go
  120. --SQL脚本总结
  121. --1,如果有条件“先做条件”
  122. --2,多列先链表,再做条件
  123. --3, 先做条件后排序
  124. --3,分组常和聚合函数在一起。
  125. --4
  126. --5,子查询,如果有已知条件用嵌套子查询,否则就是相关子查询。
  127.  
  128. --前(where 列条件)group by 后(having 组条件)
  129.  
  130. select * from titles
  131. where type='business'
  132. order by title_id desc
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

ylb:SQL 表的高级查询-多表连接和子查询的更多相关文章

  1. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  2. MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  3. MySQL多表查询之外键、表连接、子查询、索引

    MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...

  4. MySQL数据库学习笔记----MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  5. mysql(4)—— 表连接查询与where后使用子查询的性能分析。

    子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...

  6. mysql学习笔记-- 多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  7. 《SQL Server 2012 T-SQL基础》读书笔记 - 4.子查询

    Chapter 4 Subqueries 子查询分为:独立子查询(Self-Contained Subqueries)和相关子查询(Correlated Subqueries),独立子查询可以单独拿出 ...

  8. Oracle_SQL(5) 连接和子查询

    一.连接join一般分类: inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行. left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right ...

  9. mysql经常使用查询:group by,左连接,子查询,having where

    前几天去了两个比較牛的互联网公司面试.在sql这块都遇到问题了,哎.可惜呀,先把简单的梳理一下 成绩表 score 1.group by 使用 按某一个维度进行分组 比如: 求每一个同学的总分 SEL ...

随机推荐

  1. 数据库——初始mysql语句(2)

    sql语句 #1. 操作文件夹(库) 增:create database db1 charset utf8; 查:show create database db1; show databases; 改 ...

  2. [oldboy-django][5python基础][内置函数]zip

    python3中,把两个或两个以上的迭代器封装成生成器,在循环遍历生成器中,不断产生元组. 如果提供的迭代器长度不对等,生成器的长度为最短迭代器的长度. # coding= utf-8 # zip 多 ...

  3. TOJ 4689: Sawtooth

    4689: Sawtooth Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 26     ...

  4. 计算两个日期之间的天数差C++/java

    1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance ...

  5. CentOS7重新生成 /boot/grub2/grub.cfg

    CentOS7重新生成 /boot/grub2/grub.cfg CentOS7 is using grub2 and the generated /boot/grub2/grub.cfg rathe ...

  6. codevs 1690 开关灯 线段树区间更新 区间查询Lazy

    题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这些路灯全是关着的,六点之后,会有M(2<=m<=100000)个人 ...

  7. Chrome 浏览器访问 Google 学术出现问题 “but your computer or network may be sending automated queries. ”

    问题: Chrome 浏览器访问 Google 学术出现如下的问题 : ... but your computer or network may be sending automated querie ...

  8. 后缀数组基本问题QAQ

    以下题目均来自罗穗骞的论文... No.1最长公共前缀 最长公共前缀: 题目: 给定一个字符串,询问某两个后缀的最长公共前缀. 分析: 某两个后缀的最长公共前缀就是区间height最小值,转化为RMQ ...

  9. 用来武装Firebug的十四款Firefox插件

    原文发布时间为:2010-04-24 -- 来源于本人的百度文章 [由搬家工具导入] 如果你是一名Web设计师,Firebug想必不会陌生,作为一款Firefox插件,它可能是网站前端开发最有用的工具 ...

  10. linux内核之情景分析mmap操作

    进程可以通过mmap把一个已打开文件映射到用户空间. mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset) sta ...