簡體   English   中英

不使用子查詢的SQL查詢

[英]SQL Query without using sub queries

我正在使用2張桌子

假設(這些表還有更多,但這只是一個非常簡單的視圖)

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的人

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'

您將需要弄清楚如何確定論文的主要作者,然后假設其他所有人都是共同作者。 一旦做到這一點,您的SQL查詢將需要排除該主要編寫器,但包括所有其他編寫器。

解決方案,不包含子查詢和JOIN:

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM