好吧,我有兩個表。SQL選擇基於另一個表中的列
一張桌子叫做人物,只有列名和年齡。 (一個人的姓名和年齡)。 另一張桌子叫做Giving,有捐款人,收款人和禮物名。 (捐助者和接受者有引用persons.pname的外鍵限制)。
我需要找到所有捐贈禮物給不同年齡的人的名字。
好吧,我有兩個表。SQL選擇基於另一個表中的列
一張桌子叫做人物,只有列名和年齡。 (一個人的姓名和年齡)。 另一張桌子叫做Giving,有捐款人,收款人和禮物名。 (捐助者和接受者有引用persons.pname的外鍵限制)。
我需要找到所有捐贈禮物給不同年齡的人的名字。
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
我試過這個,得到「Missing keyword」? – user1657563
在哪個數據庫上?這應該至少在MSSQL,MySQL,Oracle,PQ上起作用。錯誤消息中有更多信息? –
如果你指的是捐贈者的年齡必須是不同的,則接收機年齡,那就試試這個:
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
請告訴我們你已經嘗試了什麼,還加入了一些樣本數據,然後期望的結果會有幫助。 – Taryn
這需要使用where過濾器的幾個內部連接 - 您熟悉SQL嗎? – PinnyM
你使用的是什麼rdbms? – Taryn