我正在努力做一些(应该)非常简单的事情。也许我错过了什么。
我希望获得一个人合作过的完整列表。我的最终目标是找到他最常与谁合作(无论可能是什么样的关系)
Ex:Robert De Niro
曾与Joe Pesci共同演过7次,但指导了他两次。我想要一个包含9个条目的表。
我可以使用主题API,但只返回电影列表。然后,我必须执行10个以上的API查询才能获得每部电影的演员表。永远需要,代码是一场噩梦。
如果我使用MQL搜索,我只能搜索Robert De Niro
已加注的电影,但不能搜索他导演,编写或制作的每部电影或已加星标。基本上我一次只能搜索1个角色。
有更好的方法吗?我需要得到一个清单:
Movies
Actors/Crew People
Roles
关联Movies
和People
我目前所做的事情:
Robert De Niro
并获取计算机ID 正如您所看到的,这是一项非常昂贵的操作。以这种方式避免重复是非常困难的(虽然我正在研究它)
编辑:这是我当前的MQL查询(出于某种原因,只有当我指定两个演员名称时它才有效,但这是另一个问题。
$query = array(array(
'a:starring'=>array('actor'=>'Joe Pesci'),
'b:starring'=>array('actor'=>'Robert De Niro'),
'directed_by'=>null,
'produced_by'=>array(),
'written_by'=>array(),
'executive_produced_by'=>array(),
'name'=>null,
'mid'=>null,
'starring'=>array(array('actor'=>array('mid'=>null,
'name'=>null))),
'type'=>'/film/film'
));
MQL:
[{
"a:starring":
{"actor":"Joe Pesci"},
"b:starring":
{"actor":"Robert De Niro"},
"directed_by":null,
"produced_by":[],
"written_by":[],
"executive_produced_by":[],
"name":null,
"mid":null,
"starring":
[{"actor":
{"mid":null,"name":null}}],
"type":"\/film\/film"}]
答案 0 :(得分:2)
您可以在单个MQL查询中执行此操作,该查询具有针对定向/写入/作用属性的不同子查询。只需确保使每个子查询可选。
例如:
[{
"a:starring": {
"actor": "Joe Pesci"
},
"b:starring": {
"actor": "Robert De Niro"
},
"directed_by": [{
"id": null,
"name": null,
"optional": true
}],
"produced_by": [{
"id": null,
"name": null,
"optional": true
}],
"written_by": [{
"id": null,
"name": null,
"optional": true
}],
"executive_produced_by": [{
"id": null,
"name": null,
"optional": true
}],
"name": null,
"mid": null,
"starring": [{
"actor": {
"mid": null,
"name": null
}
}],
"type": "/film/film"
}]
答案 1 :(得分:-1)
我不知道MQL,但标准的SQL会是这样的:
Select
p.Name + ' has worked with '+p2.name+' on the movie '+m.Name
from Person p
join Roles r on r.PersonId=p.Id
join Movie m on m.Id=r.MovieId
join Roles r2 on r.MovieId=m.Id and r2.Id <> r.Id
join Person p2 on p2.Id=r2.PersonId