Mysql 从两个表中选择并与第三个表进行比较的SQL查询
我是sql新手,正在尝试执行查询 我已经创建了以下表格,它们工作正常Mysql 从两个表中选择并与第三个表进行比较的SQL查询,mysql,sql,oracle,Mysql,Sql,Oracle,我是sql新手,正在尝试执行查询 我已经创建了以下表格,它们工作正常 create table ACTOR ( actor_name varchar(30), gender varchar(8), date_of_birth date, primary key(actor_name) ); 我一直在琢磨如何和演员表进行比较 select movie_title as MOVIE_TITLE 对于条件计数,您可以在表达式中使用SUM() SELECT m.mov
create table ACTOR
(
actor_name varchar(30),
gender varchar(8),
date_of_birth date,
primary key(actor_name)
);
我一直在琢磨如何和演员表进行比较
select movie_title as MOVIE_TITLE
对于条件计数,您可以在表达式中使用
SUM()
SELECT
m.movie_title,
m.release_year,
SUM(a.gender = 'female') no_of_female_members,
SUM(a.gender = 'male') no_of_male_members,
COUNT(c.actor_name) no_of_all_members
FROM
MOVIE m
LEFT JOIN CAST_MEMEBER c
ON (m.movie_title = c.movie_title AND m.release_year = c.release_year)
JOIN ACTOR a
ON (a.actor_name = c.actor_name)
GROUP BY m.movie_title,m.release_year
如何比较,你的意思是一个加入与演员组成员
?这是我到目前为止尝试的SQL>选择电影名称作为电影名称,发行年份作为发行年份,actor.actor\u name,actor.gender from movie movie,actor-actor 2其中actor.actor\u name=CAST\u MEMEBER.actor\u name;我们使用表和列别名来更改用于引用对象的名称。除非您觉得需要打字练习,否则将movie\u title别名为movie\u title
,没有任何意义。@APC,我想以“as”操作符的方式显示它。movie\u title将显示为movie\u title
。这是默认的行为。我们只需要在需要与大写列名不同的内容时使用别名。表别名也一样。@M_Khalid,谢谢你的回答,但只是一个后续问题,没有女性成员,@Mani它是SUM(a.gender='female')结果的别名。
它不是一个变量,只是当前查询的临时列谢谢你帮我理解
select movie_title,
release_year,
count(decode(t.gender,'FEMALE',1)) female_actors
from movie m , (select c.movie_title
a.gender,
c.release_year
from cast_member c, actor a
where c.movie_title = a.movie_title
and c.actor_name = a.actor_name) t
where m.movie_title = t.movie_title
and m.release_year = t.release_year
group by m.movie_title ,t.release_year