Varray比较集合中的项目

时间:2018-09-25 07:47:50

标签: sql oracle

具有导演和演员属性的电影表。 actor是一个varray类型的actor_type,包含5个actor。我想检索演员既是导演又是演员的电影。

我尝试过

select actors, title, director
from movie
where actors = director 

它告诉我数据类型不一致

2 个答案:

答案 0 :(得分:1)

您未提供示例数据,因此根据您的描述,我的理解是:

director和actor属性在影片表中,并且actor显示为Varray,称为actor_type。此外,演员Varray在每部电影中都包含5位演员。

查询Varray的方式不同,可以在FROM子句中使用TABLE表达式。

此网站可能会对您有所帮助

数据库对象关系开发人员指南: https://docs.oracle.com/database/121/ADOBJ/adobjcol.htm#ADOBJ00204

然后,您必须遍历演员列表,并使用EXISTS或IN运算符检查导演是否在演员列表中,而不是使用actors = director

答案 1 :(得分:0)

您未指定Director列的数据类型。您可以对join actor = convert(director)进行转换。 但我强烈建议您不要这样做。

字符串连接的问题是非常不一致的,如果这是将actor加入Director的唯一选择,则需要重组表。

我建议您有一个包含演员和导演的人员表。 然后,您需要一个电影表,并将导演和演员作为外键。

例如,如果电影可以有多个演员,那么您需要在人物表和电影表之间建立链接表(如果导演不止一个,则与导演相同)

希望这会有所帮助。