这是两个表如下图我让这两个表合成一行,用下面的语句:
create or replace view v_djwz_linshi as
SELECT * FROM
  (select 1 R101Hid, rbh R101设备编号, xzwz R101行走位置, hzjd R101回转角度, bcrq R101时间 from ssss2 where rbh='R101') R101
 
left join
  (select 1 S08Hid, sbh S8设备编号, xzwz S8行走位置, hzjd S8回转角度, indate S8时间 from ssss1 where sbh='S08') S08 ON R101.R101Hid=S08.S08Hid
结果如下图:
我想把那个R101HID和S08HID那两列去掉,我改了下语句:
create or replace view v_djwz_linshi as
SELECT * FROM
  (select  rbh R101设备编号, xzwz R101行走位置, hzjd R101回转角度, bcrq R101时间 from ssss2 where rbh='R101') R101
 
left join
  (select sbh S8设备编号, xzwz S8行走位置, hzjd S8回转角度, indate S8时间 from ssss1 where sbh='S08') S08 ON R101.R101设备编号=S08.S8设备编号
结果如图可后面S8的几列没有数据了,大侠们帮忙看看是哪的问题吧?
R101HID和S08HID那两列的格式默认的是number型,我想问怎么能变成其他格式吗?我把1改成字母S08提示错误
谢谢各位了!
另外下面这个链接是之前发重的一个帖子,你们谁回一个,我就结了。
http://bbs.csdn.net/topics/390398583

解决方案 »

  1.   

    你把那个R101HID和S08HID那两列去掉后 LEFT JOIN 的关联就失效了。你可以直接写成 select ssss1.*,ssss2.* from ssss1,ssss2 where ssss2.rbh='R101' and ssss1.sbh='S08'
      

  2.   

    原因是这样的:
    一 在上面的sql语句中,你用的关联条件是'R101.R101Hid=S08.S08Hid',其中因为R101.R101Hid和S08.S08Hid的值都为1,所以关联出了所有的结果值
    二 在下面的sql语句中,你用的关联条件是'R101.R101设备编号=S08.S8设备编号',其中R101.R101设备编号的值是R101,而S08.S8设备编号的值是S08,两者是关联不到的。因为你用的左外连接,所以只能保留表R101中的所有值,后面的表S08因为关联不到,所以对应的列就是空了。
    按照你的要求,我修改好的sql语句如下所示,你参考下
    --修改后的sql语句
    SELECT R101设备编号,R101行走位置,R101回转角度,R101时间,
      S8设备编号,S8行走位置,S8回转角度,S8时间
      FROM (SELECT 1    R101HID,
                   RBH  R101设备编号,
                   XZWZ R101行走位置,
                   HZJD R101回转角度,
                   BCRQ R101时间
              FROM SSSS2
             WHERE RBH = 'R101') R101  LEFT JOIN (SELECT 1      S08HID,
                        SBH    S8设备编号,
                        XZWZ   S8行走位置,
                        HZJD   S8回转角度,
                        INDATE S8时间
                   FROM SSSS1
                  WHERE SBH = 'S08') S08
        ON R101.R101HID = S08.S08HID
      

  3.   


    谢谢,试过了,可以,你把这个链接打开,简单的回复下帖子,我把分给你http://bbs.csdn.net/topics/390398583