首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yap Prolog -翻译SQL查询

Yap Prolog -翻译SQL查询
EN

Stack Overflow用户
提问于 2018-10-14 04:20:35
回答 1查看 120关注 0票数 2

我正在尝试为一个从mySql转换为Prolog事实的数据库创建一个Prolog查询。

Prolog事实涉及许多表,但与此查询相关的只有两个:

代码语言:javascript
复制
actor(ID,firstName,lastName)
film_actor(actor_id,film_id)
film(ID, title,_,_,_,_,_,_,_)

我正在尝试创建一个声明以下内容的查询:

列出恰好有5名演员的电影的片名。

到目前为止,我成功地创建了这个查询,它列出了所有电影和电影中每个演员的ID:

代码语言:javascript
复制
all((T,AID),(film(FID,C,T,_,_,_,_,_,_),film_actor(AID,FID)),RS).

我需要的是计算这个辅助AID和状态,它必须等于每个film_id的5次出现,但我不知道如何从我到目前为止阅读的yap文档中做到这一点。

有什么建议吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-10-14 21:34:55

您只需使用findall,然后使用length将列表限制为5个元素,即可获得一个电影ID。

代码语言:javascript
复制
one_film_with_5_actors(FilmID,ActorIDs) :-
  findall(AID, (film(FilmID,_,_,_,_,_,_,_,_),film_actor(AID,FilmID)), ActorIDs),
  length(ActorIDs, 5).

Prolog将返回回溯每一对(FilmID,ActorID),然后将基本访问器应用于这个'grouped by‘DB视图,以获得您需要的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52796975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档