SQLクエリ(ID番号1000の人の友達の友達のリスト名)を関係代数に変換しようとしていますが、あまり運がありません。クエリは次のとおりです。
CREATE TEMPORARY TABLE Temp1 AS (
SELECT * FROM (
SELECT ID2 AS ID FROM isFriend WHERE ID1 = 1000
UNION
SELECT ID1 AS ID FROM isFriend WHERE ID2 = 1000
) temp
);
CREATE TEMPORARY TABLE Temp2 AS (SELECT * FROM MyTable);
SELECT Name FROM People WHERE ID IN (
SELECT ID2 AS ID FROM isFriend WHERE ID1 IN (SELECT * FROM Temp1)
UNION
SELECT ID1 AS ID FROM isFriend WHERE ID2 IN (SELECT * FROM Temp2)
);
私が最初にしたことは、名前変更操作を使用して一時テーブルを作成することでした。
ρ(Temp1,∏ID1(σID2=1000(isFriend)) U (∏ID2(σID1=1000(isFriend)))
その後、「SELECTName...」以外はどうしたらいいのかよくわかりません。
∏Name(σID.....)
Select操作で名前が変更された一時テーブル「Temp1」を参照するにはどうすればよいですか。また、「IN」キーワード(WHERE ID1 IN ...)をどのように変換しますか?
私は関係代数全体に少し慣れていないので、(RAの経験がある人にとって)本当に明白なことを完全に見落としても驚かないでしょう。
助けていただければ幸いです、ありがとう!