Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用子查询的SQL查询_Sql_Oracle - Fatal编程技术网

不使用子查询的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。在这种情况下,讲师应被解雇;抱歉,但是家庭作业标签的定义是:这让潜在的回答者知道他们应该指导学生解决问题,而不是简单地给出完整的答案