首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在oracle中编辑请求(添加正确的连接)

在oracle中编辑请求(添加正确的连接)
EN

Stack Overflow用户
提问于 2020-02-19 09:29:32
回答 2查看 39关注 0票数 0

我有一个查询,它运行良好,但我想添加另一列!

代码语言:javascript
复制
SELECT 
 typ.name as Silo_name,
 tr.DEVID,
 tr.name as dev_name
 FROM 
   HANGINGTHREAD_SILO ev 
   LEFT JOIN SILO typ  
       ON ev.ID_SILO = typ.id 
   LEFT JOIN IOT_DEVICES  tr
       ON ev.DEVICES_ID = tr.id 

但是我想添加另一个列的最高温度,这个列的数据在表TEMPR_SILO中。下面是一个查询,用于查找每个tr.DEVID所需的数据。

代码语言:javascript
复制
select MAX(to_char(TEMP,'99.99')) from TEMPR_SILO where ID_TRANS in (select max(ID_TRANS) from TEMPR_SILO)   and NAME in (select NAME from SILO_SENSOR where DEVICES_ID = tr.DEVID)

我试过这样做,但我犯了错误

"ORA-20999:未能解析SQL查询!

ORA-06550:第17行,第3列: ORA-00933: SQL命令未正确结束“

代码语言:javascript
复制
SELECT 
 typ.name as Silo_name,
 tr.DEVID,
 tr.name as dev_name
 ,max(ts.TEMP)  AS "Lowest salary"
 FROM 
   HANGINGTHREAD_SILO ev 
   LEFT JOIN SILO typ  
       ON ev.ID_SILO = typ.id 
   LEFT JOIN IOT_DEVICES  tr
       ON ev.DEVICES_ID = tr.id 
   LEFT JOIN  TEMPR_SILO  ts
     ON ts.name  in (select NAME from SILO_SENSOR where DEVICES_ID = tr.DEVID)
     and  ts.ID_TRANS in(select max(ID_TRANS) from TEMPR_SILO) 
GROUP BY  
 ev.id,
 typ.name as Silo_name,
 tr.DEVID,
 tr.name as dev_name ;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-19 11:17:28

这是我的选择,它起作用了)

代码语言:javascript
复制
for MAX
SELECT 
 typ.name as Silo_name,
 tr.DEVID,
 ts.temp as max_temp,
 tr.name as dev_name
 FROM 
   HANGINGTHREAD_SILO ev 
   LEFT JOIN SILO typ  
       ON ev.ID_SILO = typ.id 
   LEFT JOIN IOT_DEVICES  tr
       ON ev.DEVICES_ID = tr.id 
   LEFT JOIN  SILO_SENSOR er   
   ON er.DEVICES_ID =  tr.DEVID
   LEFT JOIN  TEMPR_SILO  ts
    ON ts.NAME = er.name
   LEFT JOIN  TEMPR_SILO  ns
    ON  ns.NAME = er.name 
where ts.temp in (select max(TEMP) from TEMPR_SILO
                    where ID_TRANS in (select max(ID_TRANS) from TEMPR_SILO)
                    and NAME in (select NAME from SILO_SENSOR where DEVICES_ID = tr.DEVID))

group by
 typ.name ,
 tr.DEVID,
 ts.temp, 
 tr.name

票数 0
EN

Stack Overflow用户

发布于 2020-02-19 10:29:41

我不知道你所面临的问题是什么。

如果您在最后一个问题中遇到了问题,那么我必须说,我在以下查询中强调了多个问题:

代码语言:javascript
复制
SELECT
    TYP.NAME   AS SILO_NAME,
    TR.DEVID,
    TR.NAME    AS DEV_NAME,
    MAX(TS.TEMP) AS MAX_TEMP --"Lowest salary" -- just changed the name, not necessary in your case
FROM
    HANGINGTHREAD_SILO EV
    LEFT JOIN SILO TYP ON EV.ID_SILO = TYP.ID
    LEFT JOIN IOT_DEVICES TR ON EV.DEVICES_ID = TR.ID
    LEFT JOIN SILO_SENSOR SS ON SS.DEVICES_ID = TR.DEVID -- added this left join as JOIN of TS with it is not correct in your query
    LEFT JOIN TEMPR_SILO TS ON TS.NAME = SS.NAME -- added this join condition
                               AND TS.ID_TRANS IN (
        SELECT
            MAX(ID_TRANS)
        FROM
            TEMPR_SILO
    )
GROUP BY
    EV.ID,
    TYP.NAME, --as Silo_name, -- "as" is not allowed here
    TR.DEVID,
    TR.NAME; -- as dev_name -- "as" is not allowed here
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60296960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档