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  之后  左右连接 有何区别?
谁能简单的说说左连接 和 右连接或者是 给点资料也可以的

解决方案 »

  1.   

    和where 后的左右连接是一样的,只是不同的写法。
      

  2.   

    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表没有,所以为nullright join 相反
      

  3.   

    join 是标准SQL的写法。(+)是oracle独有的。