2012-12-13 103 views
-1

好吧,我有兩個表。SQL選擇基於另一個表中的列

一張桌子叫做人物,只有列名和年齡。 (一個人的姓名和年齡)。 另一張桌子叫做Giving,有捐款人,收款人和禮物名。 (捐助者和接受者有引用persons.pname的外鍵限制)。

我需要找到所有捐贈禮物給不同年齡的人的名字。

+0

請告訴我們你已經嘗試了什麼,還加入了一些樣本數據,然後期望的結果會有幫助。 – Taryn

+0

這需要使用where過濾器的幾個內部連接 ​​- 您熟悉SQL嗎? – PinnyM

+0

你使用的是什麼rdbms? – Taryn

回答

1
SELECT 
    Giving.donor 
FROM Giving 
INNER JOIN Persons AS donor ON Giving.donor=donor.Pname 
INNER JOIN Persons AS receiver ON Giving.receiver=receiver.Pname 
WHERE donor.Age<>receiver.Age 
+0

我試過這個,得到「Missing keyword」? – user1657563

+0

在哪個數據庫上?這應該至少在MSSQL,MySQL,Oracle,PQ上起作用。錯誤消息中有更多信息? –

0

如果你指的是捐贈者的年齡必須是不同的,則接收機年齡,那就試試這個:

SELECT pd.pname 
FROM Persons pd 
INNER JOIN giving g 
ON pd.pname = g.donor 
INNER JOIN persons pr 
ON pr.pname = g.receiver AND pr.age != pd.age