gpt4 book ai didi

mysql - 从 3 个不同的表创建 View ?

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:44 25 4
gpt4 key购买 nike

我正在尝试在 MySQL 中创建一个 View 以包含 3 个不同的表。

CREATE TABLE ACTOR (
ACTOR_ID DECIMAL (2,0) PRIMARY KEY NOT NULL,
ACTOR_FIRST CHAR(25),
ACTOR_LAST CHAR(30),
DOB DATE
);

CREATE TABLE DIRECTOR (
DIRECTOR_ID DECIMAL(2,0) PRIMARY KEY NOT NULL,
DIRECTOR_FIRST CHAR(25),
DIRECTOR_LAST CHAR(30)
);

CREATE TABLE FILM (
FILM_ID DECIMAL(2,0) PRIMARY KEY NOT NULL,
TITLE CHAR(50),
RELEASE_DATE DATE,
DIRECTOR_ID DECIMAL(2,0),
GENRE_ID CHAR(10),
PRODUCTION_ID CHAR(3)
);

我正在尝试创建的 VIEW:

create view film_production as 
select
title,
actor_first,
actor_last,
director_first,
director_last,
Production_id,
release_date
from film,
actor,
director
;

这给了我大约 192 个结果。但我只有 3 个 Actor ,8 部电影,8 位导演,6 个 production_id。另一件需要注意的事情是 1 部电影中有 3 个 Actor 中的 2 个,所以我应该至少有 9 部电影不显示 192。我不知道我做错了什么。我就是想不通。我在想可能是 join 或某种方式。

最佳答案

是的,您的 View 应该使用联接。

但是,您似乎缺少一个表,例如 film_actor。使用缺失的表格,并假设您正在尝试获取每部电影的 Actor 和导演

SELECT 
FILM.*
,ACTOR_FIRST + ' ' + ACTOR_LAST AS actor
,DIRECTOR_FIRST + ' ' + DIRECTOR_LAST AS director
FROM FILM
INNER JOIN FILM_ACTOR fa ON fa.FILM_ID = FILM.FILM_ID
INNER JOIN ACTOR ON ACTOR.ACTOR_ID = FILM_ACTOR.ACTOR_ID
INNER JOIN DIRECTOR d ON d.DIRECTOR_ID = FILM.DIRECTOR_ID

正如我提到的,您缺少一个表,该表可以容纳多个 Actor 并将他们与一部电影相关联:一对多关系。

关于mysql - 从 3 个不同的表创建 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091405/

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