mySQL JOIN列和计数在一个表上不同,而在另一表上获得更多值

问题描述

|| 我正在做一个数据库来组织我的电影。我有两张桌子(一张是电影,一张是演员)。简单地说,并为此练习省略了无用的字段
Table MOVIE: 
    id_movie | name_movie | star1 | star2 | star3 | runtime

Table ACTOR: 
    id_actor | name | sex | image
有些电影中,例如star1是\“ Morgan Freeman \”,但在其他电影中,“ Morgan Freeman \”在star2字段中。 我想从MOVIE表中的star1,star2,star3的
UNION
中计算出
disTINCT
值,然后在ACTOR桌上获取演员的性别和图像。 已经尝试了所有不同类型的查询,但到目前为止没有结果:( 有人可以帮我吗?     

解决方法

        @Tom Green的解决方案非常接近...除了在查询中需要使用“ DISTINCT \”外。 但是,对于不同的演员,您已经有了一个演员表,可以直接从该表查询,无论演员出演的电影是什么,演员和女演员都应该是唯一的。 但是,如果您想了解与其他人在同一电影中的不同演员,那么我实际上会通过使用“桥”来将数据库结构调整为更灵活的结构,从而根据需要允许尽可能多的“明星” \“或\”链接\“表...提供1:许多关系
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个星星,而又不会浪费其他星星的空间...那么,将来,您希望通过向电影中添加第4颗星星来调整查询,您将调整多少个查询... 无论如何,完成此操作后,您可以查询到以下简单内容
select distinct ma.id_actor,actor.*
   from MovieActor ma join Actor on ma.id_actor = actor.id_actor
如果您还有其他类型的查询类型示例,可能要冒充数据库,我可以轻松提供补充查询...     ,        看来您正在使用NAME字段加入ACTOR,这有点怪异-理想情况下,您希望使用ACTOR_ID进行加入,但是无论如何,在以下假设下,下面的查询应该可以满足您的要求:
select name,sex,image 
from actor
where name in 
(select star1 as star from movie
 union
 select star2 as star from movie
 union
 select star3 as star from movie)
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...