首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询连续两年发表论文的作者的ID

查询连续两年发表论文的作者的ID
EN

Stack Overflow用户
提问于 2020-05-05 01:48:08
回答 2查看 79关注 0票数 2

我想写一个查询,显示连续两年发表论文的作者的ID。以下是数据库模式:

代码语言:javascript
复制
CREATE TABLE Author (aid integer NOT NULL,
name varchar(50) NOT NULL,
affiliation varchar(50), primary key(aid));

CREATE TABLE Paper (pid  integer NOT NULL,
title varchar(50) NOT NULL,
year integer NOT NULL, primary key(pid));

CREATE TABLE Authored (aid integer references Author,
pid integer references Paper,
primary key(aid, pid), foreign key(aid) references Author(aid), foreign key(pid) references Paper(pid));

insert into Author(aid, name, affiliation) values (1, "A", "DS");
insert into Author(aid, name, affiliation) values (2, "B", "PS");
insert into Author(aid, name, affiliation) values (3, "C", "CS");

insert into Paper(pid, title, year) values (100, "DS1", 2019);
insert into Paper(pid, title, year) values (101, "PS1", 2019);
insert into Paper(pid, title, year) values (102, "CS1", 2019);
insert into Paper(pid, title, year) values (103, "DS2", 2020);
insert into Paper(pid, title, year) values (104, "PS2", 2020);
insert into Paper(pid, title, year) values (105, "CS2", 2019);

Authored.aid是作者的外键,Authored.pid是纸张的外键。到目前为止,这是我所得到的,但这并没有给我想要的结果,我也不知道出了什么问题:

代码语言:javascript
复制
select au1.aid, a1.name
from authored au1 inner join authored au2 on au1.aid=au2.aid
    inner join author a1 on au1.aid=a1.aid
    inner join paper p1 on au1.pid=p1.pid
    inner join paper p2 on au2.pid=p2.pid
where p1.year = p2.year+1
order by au1.aid;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-05 02:52:34

您需要GROUP BY au1.aid才能获得不同的作者:

代码语言:javascript
复制
SELECT au1.aid, a1.name
FROM authored au1 INNER JOIN authored au2 ON au1.aid=au2.aid 
    INNER JOIN author a1 ON au1.aid=a1.aid
    INNER JOIN paper p1 ON au1.pid=p1.pid
    INNER JOIN paper p2 ON au2.pid=p2.pid AND p1.year+1 = p2.year
GROUP BY au1.aid
ORDER BY au1.aid
票数 0
EN

Stack Overflow用户

发布于 2020-05-05 01:57:06

不确定您的查询,但是IN子句看起来很有用:

代码语言:javascript
复制
    where paper.year IN ('2019', '2020') 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61604421

复制
相关文章

相似问题

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