Inner join on and left join on

guiguzi629 2006-08-04 12:58:29
SELECT RT.ROOM_SYMBOL,
RTI.ROOM_NAME,
P.OYADO_PLAN_NO,
P.PLAN_TYPE,
PI.PLAN_NAME,
P.STATUS,
MAX(GC.DAY) AS DAY
FROM
HT_GOODS G
LEFT JOIN HT_PLAN P ON G.PLAN_NO = P.PLAN_NO

INNER JOIN HT_PLAN_I18N PI ON P.PLAN_NO = PI.PLAN_NO

LEFT JOIN HT_ROOMTYPE RT ON G.ROOM_NO = RT.ROOM_NO

INNER JOIN HT_ROOMTYPE_I18N RTI ON RT.ROOM_NO = RTI.ROOM_NO

LEFT JOIN HT_GOODS_CHARGE GC ON GC.GOODS_NO = G.GOODS_NO
WHERE G.FACILITY_CODE = '50001'
AND P.DISP_FLAG = '1'
AND RT.DISP_FLAG = '1'
AND G.DELETE_FLAG = '0'
AND RTI.LANGUAGE_CODE = 'ja'
AND PI.LANGUAGE_CODE = 'ja'
GROUP BY RT.ROOM_SYMBOL,
RTI.ROOM_NAME,
P.OYADO_PLAN_NO,
P.PLAN_TYPE,
PI.PLAN_NAME,
P.STATUS,
RT.DISP_SEQ,
P.DISP_SEQ
ORDER BY RT.DISP_SEQ ASC,
P.DISP_SEQ ASC



在同事的指点下第一次写了
Inner join on
left join on

这样的SQL但是在
from
Inner join on
left join on
之后 这样连接表,有点不明白,他和在 wherer 之后 左右连接 有何区别?
谁能简单的说说

左连接 和 右连接

或者是 给点资料也可以的
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
czbbbs 2006-08-04
  • 打赏
  • 举报
回复
join 是标准SQL的写法。(+)是oracle独有的。
yjdn 2006-08-04
  • 打赏
  • 举报
回复
inner join
on

等效于
from a,b
where a.id = b.id


left join 就是以左边为准:
如果
a b
id content id content
1 a 1 a
2 b


select * from a
left join b
on a.id = b.id

得到
id content id content
1 a 1 a --两表都有,所以显示
2 b null null --b表没有,所以为null

right join 相反
yjdn 2006-08-04
  • 打赏
  • 举报
回复
和where 后的左右连接是一样的,只是不同的写法。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧