gpt4 book ai didi

mySQL JOIN 列并对一个表上的不同列进行计数,并在另一表上获取更多值

转载 作者:行者123 更新时间:2023-11-29 14:47:55 24 4
gpt4 key购买 nike

我正在做一个数据库来组织我的电影。我有两张 table (一张用于电影,一张用于 Actor )。简单地说,本次练习省略了无用的字段

Table MOVIE: 
id_movie | name_movie | star1 | star2 | star3 | runtime

Table ACTOR:
id_actor | name | sex | image

有些电影的 star1 是例如“摩根·弗里曼”,但在其他电影中,“摩根·弗里曼”位于字段 star2 中。

我想从 MOVIE 表中的 star1、star2、star3 的 UNION 中计算 DISTINCT 值,然后去获取表 ACTOR 上的 Actor /女 Actor 性别和图像.

已经尝试了所有不同类型的查询,但到目前为止还没有结果:(

有人可以帮我解决这个问题吗?

最佳答案

@Tom Green 的解决方案非常接近......除了在他的查询中需要“DISTINCT”。

但是,对于不同的 Actor ,您已经有一个类型转换,可以直接从该表中查询,该表对于 Actor 和女 Actor 来说应该是唯一的,无论他们出演哪部电影。

但是,如果您想了解与其他人在同一部电影中的不同 Actor ,我实际上会将您的数据库结构调整为更灵活的结构,通过使用“桥”来允许您需要的尽可能多的“明星” ”或“链接”表...提供一对多关系

Table MOVIE: 
id_movie | name_movie | star1 | star2 | star3 | runtime


Table MovieActor:
id_movieactor | id_movie | id_actor (star)

Table ACTOR:
id_actor | name | sex | image

要填充此处的 MovieActor 表,您可以...

insert into MovieActor ( id_movie, id_actor )
select id_movie, star1 as id_actor
from movie
where star1 > 0
union
select id_movie, star2 as id_actor
from movie
where star2 > 0
union
select id_movie, star3 as id_actor
from movie
where star3 > 0

这样,每部电影的星星数量不受限制,但至少可以有 1 颗星星,而不会浪费其他星星的空间...然后,将来,您希望通过添加可能的第四颗星星来调整查询对于电影,您将调整多少个查询...

无论如何,一旦完成,您就可以像这样简单地查询

select distinct ma.id_actor, actor.*
from MovieActor ma join Actor on ma.id_actor = actor.id_actor

如果您有一些其他可能要从数据库中提出的查询类型的示例,我可以轻松提供补充查询...

关于mySQL JOIN 列并对一个表上的不同列进行计数,并在另一表上获取更多值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com