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 ……
展开
 我来答
传奇勇者
2013-05-14 · TA获得超过747个赞
知道大有可为答主
回答量:1706
采纳率:75%
帮助的人:806万
展开全部
一般的关联查询就行,百万级都是毫秒级,没问题的。
select * from firms a, orders b,firm_contracts c
where a.id=b.firm_id and a.id=c.firm_id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
厍曼冬6o
2013-05-14 · TA获得超过1569个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:1201万
展开全部
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)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式