在oracle DB中更新选择查询

时间:2018-10-13 13:03:04

标签: sql oracle

我在这样的数据库中有5个表(如下脚本):

数据库脚本


CREATE TABLE EQUIPE (
    code_equipe char(3) primary key,
    nom varchar(30),
    directeur varchar(30));
CREATE TABLE PAYS (
    code_pays varchar(3) primary key,
    nom varchar(20));
CREATE TABLE COUREUR (
    num_dossart number(3) primary key,
    code_equipe char(3),
    nom varchar(30),
    code_pays varchar(3));
CREATE TABLE ETAPE (
    num_etape number(1) primary key,
    date_etape date,
    kms number(3),
    ville_depart varchar(20),
    ville_arrivee varchar(20));
CREATE TABLE TEMPS (
    num_dossart number(3),
    num_etape number(1),
    temps_realise number(6),
    primary key(num_dossart,num_etape));
ALTER table COUREUR add CONSTRAINT FK_avoir_code_equipe FOREIGN KEY (code_equipe) REFERENCES EQUIPE(code_equipe);
ALTER table COUREUR add CONSTRAINT FK_avoir_code_pays FOREIGN KEY (code_pays) REFERENCES PAYS(code_pays);
ALTER table TEMPS add CONSTRAINT FK_avoir_num_dossart FOREIGN KEY (num_dossart) REFERENCES COUREUR(num_dossart);
ALTER table TEMPS add CONSTRAINT FK_avoir_num_etape FOREIGN KEY (num_etape) REFERENCES ETAPE(num_etape);

和我的查询

select num_etape,max(temps_realise) from TEMPS group by num_etape

给出此结果

我想更新它以得到这样的结果

enter image description here

这是

2 个答案:

答案 0 :(得分:0)

如果我没看错,一个简单的连接就可以完成工作:

select t.num_etape, 
       c.nom, 
       max(n.temps_realise)
from temps t join coureur c on c.num_dossart = t.num.dossart
group by t.num_etape, 
         c.nom;

答案 1 :(得分:0)

我已经解决了我的问题,谢谢大家

select num_dossart,nom,num_etape,dernier from COUREUR C,
(select num_etape ,max(temps_realise) as dernier from TEMPS GROUP BY num_etape) T 
where num_dossart = 
(select num_dossart from TEMPS where temps_realise = dernier )