sql三表关联查询,求语句执行效率越高越好
orders订单idnamefirm_id公司money金额1a11002b12003c21004d31005e41006f23007g51008h61009i71001...
orders 订单
id name firm_id公司 money金额
1 a 1 100
2 b 1 200
3 c 2 100
4 d 3 100
5 e 4 100
6 f 2 300
7 g 5 100
8 h 6 100
9 i 7 100
10 j 8 100
firm_contracts 合同
id name firm_id公司 type类型 sales_id跟进销售
1 aa 1 1 11
2 bb 1 2 11
3 cc 1 3 11
4 dd 1 4 0
5 ee 2 1 11
6 ff 2 2 11
7 gg 2 3 11
8 hh 3 1 11
9 ii 4 1 11
10 jj 4 4 11
firms 公司
id name
1 f1
2 f2
3 f3
4 f4
5 f5
关系:一个公司可以下多个订单,可以签订多种合同
需求:查出符合条件的订单--> 订单公司有签订了类型4的合同且跟进销售为0或者没有签订类型4的合同
select orders.* from orders …… 展开
id name firm_id公司 money金额
1 a 1 100
2 b 1 200
3 c 2 100
4 d 3 100
5 e 4 100
6 f 2 300
7 g 5 100
8 h 6 100
9 i 7 100
10 j 8 100
firm_contracts 合同
id name firm_id公司 type类型 sales_id跟进销售
1 aa 1 1 11
2 bb 1 2 11
3 cc 1 3 11
4 dd 1 4 0
5 ee 2 1 11
6 ff 2 2 11
7 gg 2 3 11
8 hh 3 1 11
9 ii 4 1 11
10 jj 4 4 11
firms 公司
id name
1 f1
2 f2
3 f3
4 f4
5 f5
关系:一个公司可以下多个订单,可以签订多种合同
需求:查出符合条件的订单--> 订单公司有签订了类型4的合同且跟进销售为0或者没有签订类型4的合同
select orders.* from orders …… 展开
展开全部
一般的关联查询就行,百万级都是毫秒级,没问题的。
select * from firms a, orders b,firm_contracts c
where a.id=b.firm_id and a.id=c.firm_id
select * from firms a, orders b,firm_contracts c
where a.id=b.firm_id and a.id=c.firm_id
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from orders a
where exists(select 1 from contracts firm_id=a.firm_id and type=4 and sales_id=0)
union all
select * from orders b
where not exists(select 1 from contracts firm_id=b.firm_id and type=4)
where exists(select 1 from contracts firm_id=a.firm_id and type=4 and sales_id=0)
union all
select * from orders b
where not exists(select 1 from contracts firm_id=b.firm_id and type=4)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询