具有导演和演员属性的电影表。演员是actor_type的可变数组类型,包含5个演员。我想检索演员既是导演又是演员的电影。
我试过了
select actors, title, director
from movie
where actors = director
它告诉我不一致的数据类型
您没有提供示例数据,因此我对您的描述的理解是:
导演和演员属性在电影表中,演员显示为Varray,称为actor_type。此外,演员 Varray 在每部电影中包含 5 个演员。
查询 Varray 的方式不同,可以在 FROM 子句中使用 TABLE 表达式。
这个网站可能会帮助你
数据库对象关系开发人员指南: https ://docs.oracle.com/database/121/ADOBJ/adobjcol.htm#ADOBJ00204
然后,您必须遍历演员列表并使用 EXISTS 或 IN 运算符来检查导演是否在演员列表中,而不是使用 actor=director
您没有指定 director 列是什么数据类型。您可以对 join actor = convert(director) 进行转换。但我强烈建议你不要这样做。
加入字符串的问题是它非常不一致,如果这是你将演员加入导演的唯一选择,你需要重组你的表。
我建议你有一个包含演员和导演的 Person 表。然后,您需要一个电影表,并将导演和演员作为外键。
例如,如果电影可以有多个演员,那么您需要一个人物表和电影表之间的链接表(如果您有多个导演,则与导演相同)
希望这可以帮助。