oracle将两个表关联成一个试图的问题(带图带语句)回帖有惊喜
这是两个表如下图
我让这两个表合成一行,用下面的语句:
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
------解决方案--------------------你把那个R101HID和S08HID那两列去掉后 LEFT JOIN 的关联就失效了。你可以直接写成 select ssss1.*,ssss2.* from ssss1,ssss2 where ssss2.rbh='R101' and ssss1.sbh='S08'
------解决方案--------------------把中间的字段改成要需要的就行了。
------解决方案--------------------原因是这样的:
一 在上面的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 &