程序员面试金典——解题总结: 9.15 数据库 15.1编写SQL查询,列出租住不止一套公寓的承租人。

问题:编写SQL查询,列出租住不止一套公寓的承租人。
      每套公寓可能有多位承租人,而每位承租人可能租住多套公寓。每套公寓隶属移动大楼,而没动大楼属于一个综合体。
 下面是各个表:
Apartments: Buildings:Tenants:
AptId int BuildingID intTenantID int
UnitNumber varcharComplexID intTenantName varchar
BuildingID intBuildingName varchar


Complexs: AptTenants:Requests:
ComplexID int TennantID int RequestID int
ComplexName intAptID intStatus varchar
AptID int
Description varchar


分析:Apartments属于Buildings,Buildings属于Complexes。AptTenants:是公寓和承租人表
      根据公寓和承租人表中按照TenantId进行groug by之后,如果大于等于2,就找到承租人,然后找到承租人信息。
 这个必须把group by之后的结果作为一张临时表,然后和Tenants进行一起操作
实现:
select Tenants.TenantID  , TenantName from ( select count(*) as num , TenantID from AptTenants groug by TenantId ) as Table2 , Tenants 
where Tenants.TenantId = Table2.TenantID and num >= 2;
关键:
1分组后的结果可以用having实现,group by是对某个属性进行分组
  直接用having对count中结果>=2的筛选即可,
  select TenantName from Tenants INNER JOIN (select TenantID from AptTenants group by TenantID having count(*) >= 2) TempTable ON TempTable.TenantID = Tenants.TenantID;
  将查询结果重命名为表只需要   () TempTable 即可


2 连接分为:内连接,外链接,交叉连接。操作为: ON
内连接:等值连接,自然连接
        等值连接:连接条件为“=”,例子: select * from students as s INNNER JOIN classes as c ON s.cno = c.cno
自然连接:连接条件为“=”,使用选择列表中的列,删除连接表中的重复列,例子:删除authors和publishers中重复列city和state
                                select a.* , p.country from authors as a INNER JOIN publishes as p on a.ciity = p.city;


外连接:左外连接,右外连接
        左外连接:列出匹配lie(where中的列)和左表匹配的列,例子: select a.* , b.* fron LUNTAN as a LEFT JOIN user as b ON a.name = b.name


交叉连接:笛卡尔积,交叉结果,返回两个所有数据航的笛卡尔积。例子:select *type , pub_name fro titles CROSS JOIN publishes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值