Je suis nouveau chez Prolog. Ma "base de données" comprend les règles suivantes:Duplicata de base de données 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).
"professeur" a le schéma:
teacher(TeacherID, TeacherFirstname, TeacherLastname)
"école" a le schéma:
school(SchoolID, SchoolName, City)
"groupe" a la régime:
group(GroupID, GroupName, TeacherID, SchoolID)
Je veux o Exemplaire toutes les écoles où les enseignants travaillent dont le nom de famille est «Johnson».
Ma requête est la suivante:
group(GroupID, _ , TeacherID , SchoolID) , school(SchoolID , SchoolName, _) , teacher(TeacherID , _ , 'Johnson').
Je veux revenir le nom des écoles, qui correspondent à la requête, une seule fois. Cependant en utilisant ma requête actuelle, je reçois une seule école plusieurs fois. Comment puis-je détecter les doublons et ne pas les sortir? Merci!
PS: L'algèbre relationnelle serait
π SchoolName (σ TeacherLastname = 'Johnson' (teacher ⨝ group ⨝ school))
Quel est le but de votre requête? Les résultats répétés signifient qu'une solution donnée satisfait votre requête de plusieurs façons. – lurker
Je veux connaître le nom de toutes les écoles où travaille un enseignant dont le nom de famille est "Johnson". Il ne sert à rien d'avoir deux fois la même école. Tu vois ce que je veux dire? – pmax1
Que voulez-vous dire, "Je reçois une seule école plusieurs fois"? Ecrire avec précision - vous obtenez plusieurs tuples de résultat, dont certains ont la même école. Si vous ne voulez que des écoles, demandez seulement des écoles. – philipxy