0
我是Prolog的新手。我的 「數據庫」 包括以下規則:序言數據庫重複
teacher(1, 'Benjamin', 'Johnson').
teacher(2, 'Mike', 'Oliver').
teacher(3, 'James', 'Johnson').
school(1, 'School1','Town1').
school(2, 'School2','Town2').
school(3, 'School3','Town3').
group(1,'Group1', 1, 1).
group(2,'Group2', 3, 2).
group(3,'Group3', 2, 1).
group(4,'Group4', 2, 1).
group(5,'Group5', 3, 3).
group(6,'Group6', 1, 3).
「老師」 有方案:
teacher(TeacherID, TeacherFirstname, TeacherLastname)
「學校」 有方案:
school(SchoolID, SchoolName, City)
「組」 有方案:
group(GroupID, GroupName, TeacherID, SchoolID)
我想鄰輸出教師工作的所有學校的姓氏是'約翰遜'。
我的查詢如下:
group(GroupID, _ , TeacherID , SchoolID) , school(SchoolID , SchoolName, _) , teacher(TeacherID , _ , 'Johnson').
我想回到學校,誰適合查詢,只有一次的名稱。然而,使用我目前的查詢,我多次獲得一所學校。我如何檢測重複項而不輸出它們?謝謝!
PS:關係代數是
π SchoolName (σ TeacherLastname = 'Johnson' (teacher ⨝ group ⨝ school))
查詢的目的是什麼?重複的結果意味着給定的解決方案以多種方式滿足您的查詢。 – lurker
我想要得到一位老師工作的所有學校的名字,他們的姓氏是「Johnson」。兩次獲得同一所學校沒有意義。你懂我的意思嗎? – pmax1
你是什麼意思,「我多次獲得一所學校」?精確地寫 - 你會得到多個結果元組,其中一些具有相同的學校。如果你只想回學校,只需要求學。 – philipxy