各位大虾,求一条sql

[复制链接]
查看11 | 回复9 | 2010-10-8 09:31:22 | 显示全部楼层 |阅读模式
下面这样一条sql,可以有办法,把三个eft join emp的,换成一个join的吗?
SELECT D.DNAME,
D.LOC,
E1.MGR,
E1.HIREDATE,
E2.MGR,
E2.HIREDATE,
E3.MGR,
E3.HIREDATE
FROM DEPT D
LEFT JOIN EMP E1
ON E1.JOB = 'CLERK'
LEFT JOIN EMP E2
ON E2.JOB = 'SALESMAN'
LEFT JOIN EMP E3
ON E3.JOB = 'MANAGER'

回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
关联条件都没写啊
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
SELECT D.DNAME,
D.LOC,
E1.MGR,
E1.HIREDATE,
E2.MGR,
E2.HIREDATE,
E3.MGR,
E3.HIREDATE
FROM scott.DEPT D,scott.EMP E1,scott.EMP E2,scott.EMP E3 where
E1.JOB = 'CLERK' and E2.JOB = 'SALESMAN' andE3.JOB = 'MANAGER';
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
0x0x0x 发表于 2012-6-18 15:18
SELECT D.DNAME,
D.LOC,
E1.MGR,

这个不是相当于,也是扫描了三次emp表,我的想法,看有没有方法,扫描一次emp表,也就是只连接一次,得到
SELECT D.DNAME,
D.LOC,
E1.MGR,
E1.HIREDATE,
E2.MGR,
E2.HIREDATE,
E3.MGR,
E3.HIREDATE
这个结果。
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
atgc 发表于 2012-6-18 15:14
关联条件都没写啊

没关联条件啊
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
magscott 发表于 2012-6-18 15:23
没关联条件啊

没关联条件那不成笛卡尔积了?
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层



竟然有连接语句的On后面没有写关联条件的!好奇怪的语句啊
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
本帖最后由 magscott 于 2012-6-18 15:44 编辑
0x0x0x 发表于 2012-6-18 15:38
竟然有连接语句的On后面没有写关联条件的!好奇怪的语句啊

是啊,没有关联条件,一个报表需要,看有没有只要一个join就能达到目的,不然实际环境中,有50个join,严重影响性能啊...
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
估计需求有问题,要不就是需求理解得有问题
回复

使用道具 举报

千问 | 2010-10-8 09:31:22 | 显示全部楼层
应该可以,先join一次,然后再行转列
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行