不使用子查询的SQL查询
我用了两张桌子 假设这些表还有更多内容,但这只是一个非常简单的视图不使用子查询的SQL查询,sql,oracle,Sql,Oracle,我用了两张桌子 假设这些表还有更多内容,但这只是一个非常简单的视图 Table1 is sID ResearchPaperID 1 A1 2 A1 3 A1 4 A1 Table2 is sID Name 1 Person1 2 Person2 3 Person3 4 Person4 我需要做的是找到与共同撰写Person1论文相关的人,但不在输出中显示Person1 目前我有一些 SELECT Table2.sI
Table1 is
sID ResearchPaperID
1 A1
2 A1
3 A1
4 A1
Table2 is
sID Name
1 Person1
2 Person2
3 Person3
4 Person4
我需要做的是找到与共同撰写Person1论文相关的人,但不在输出中显示Person1
目前我有一些
SELECT Table2.sID, Table1.sID
FROM Table2, Table1
WHERE Table2.sID = Table1.sID
AND Table2.Name = 'Person1'
这会让我知道Person1所做的一切
这是一个家庭作业问题,已经讨论了一段时间了
也不能使用子查询。
对不起,我应该提到不使用内部联接、外部联接、左/右联接、自然联接
它不应该比我上面所说的仅仅使用基本命令要困难得多
[编辑]
输出应该是这样的
ResearchPaperID Name
A1 Person2
A1 Person3
A1 Person4
我想找到一些人是person1论文的合著者,但没有在输出中显示person1。你需要找出如何识别论文的主要作者,然后假设其他人都是合著者。一旦可以这样做,您的SQL查询将需要排除该主编写器,但包括所有其他编写器。解决方案,不包括子查询和联接:
SELECT *
FROM Table1 t1
INNER JOIN Table1 t2 ON t1.ResearchPaperID = t2.ResearchPaperID
INNER JOIN Table2 t3 ON t1.SID = t2.SID
WHERE t3.Name = 'Person1'
select distinct t3.sID, t3.ResearchPaperID
from Table1 t1, Table2 t2, Table1 t3
where t1.sID = t2.sID and t2.Name = 'Person1'
and t1.ResearchPaperID = t3.ResearchPaperID
and t3.sID <> t2.sID -- this restriction is the one that removes the 'Person1'
你怎么知道一个人和另一个人共同写了一篇论文呢?表1的sIDs显示,有多个人写了相同的研究论文,更新了帖子以显示输出和哪个SQL?SQL Server,MySQLI正在使用Oracle SQL Developer。。因此,无论使用哪一个=/对不起,我是新手。对不起,没有内部连接或外部连接,自然连接等。您可以在something=somethingelseIs与!=?不太了解t1.ResearchPaperID=t3.RearchPaperID。。它们不只是相同的表吗?是的,等于!=。关于这两张表,它们是同一张表是的。但是t1受到t2 sID的限制,因此只有A1为1的行。我们需要另一个表1 t3来选择具有相同ResearchPaperID但不同sID的所有行。正是你所要求的。谢谢,成功了。您甚至提前一步删除了重复项:。在创建第三张桌子的时候要记住这一点。LOL,没必要的问题并不是说我必须这么做。再次感谢,开始练习。@aF。在这种情况下,讲师应被解雇;抱歉,但是家庭作业标签的定义是:这让潜在的回答者知道他们应该指导学生解决问题,而不是简单地给出完整的答案