Mysql sql创建视图不相关的结果错误

Mysql sql创建视图不相关的结果错误,mysql,sql,Mysql,Sql,我只想在Netflix上观看浪漫电影 这是我使用的代码,并提取了结果的图片。 遗憾的是,我得到了一个多余的结果,包括不相关的电影列表 CREATE VIEW DB2020_romance_on_netflix AS SELECT distinct(DB2020_MOVIEINFO.MOVIE_ID), DB2020_MOVIEINFO.title, DB2020_MOVIEINFO.plot, DB2020_genre.genre, DB2020_ON_NETFLIX.on_

我只想在Netflix上观看浪漫电影

这是我使用的代码,并提取了结果的图片。 遗憾的是,我得到了一个多余的结果,包括不相关的电影列表

 CREATE VIEW DB2020_romance_on_netflix  AS
    SELECT
    distinct(DB2020_MOVIEINFO.MOVIE_ID), DB2020_MOVIEINFO.title, DB2020_MOVIEINFO.plot, DB2020_genre.genre, DB2020_ON_NETFLIX.on_netflix
    FROM
    DB2020_genre, DB2020_MOVIEINFO, DB2020_ON_NETFLIX
    WHERE
        DB2020_genre.genre = 'romance' and
        DB2020_genre.mov_id in (SELECT mov_id 
            FROM DB2020_ON_NETFLIX 
            WHERE on_netflix = 'yes');

 select * from DB2020_romance_on_netflix;

这里有更多需要检查的代码

CREATE TABLE DB2020_MOVIEINFO (
        MOVIE_ID            Int  primary key,
        title           VARCHAR(30) NOT NULL, 
        plot      VARCHAR(500) NOT NULL,
        main_target     VARCHAR(10) NOT NULL,
        country     char(6) NOT NULL,
    INDEX (MOVIE_ID)
    );
    DESCRIBE DB2020_MOVIEINFO;

    INSERT INTO DB2020_MOVIEINFO VALUES (1, 'Parasite', 'Greed and class discrimination threaten the newly formed symbiotic relationship between the wealthy Park family and the destitute Kim clan.','Adult','Korea');
    INSERT INTO DB2020_MOVIEINFO VALUES (2, 'Before Sunset', 'Celine and Jesse, who met nine years ago in Vienna, cross paths again for a single day in Paris. Together, they try to find out what might have happened if they had acted on their feelings back then.','Adult','US');
    INSERT INTO DB2020_MOVIEINFO VALUES (3,'Before Sunrise', 'While travelling on a train in Europe, Jesse, an American man, meets Celine, a French woman. On his last day in Europe before returning to the US, he decides to spend his remaining hours with her.','All', 'US');


    CREATE TABLE DB2020_genre(
        mov_id      INT NOT NULL,
        genre       VARCHAR(15) NOT NULL,
        release_date    DATE NOT NULL,
        INDEX (genre),
        PRIMARY KEY (mov_id, genre),
        FOREIGN KEY (mov_id) REFERENCES DB2020_MOVIEINFO(MOVIE_ID)
            ON DELETE CASCADE ON UPDATE CASCADE);
    DESCRIBE DB2020_genre;

    INSERT INTO DB2020_genre VALUES (1, 'thriller',str_to_date('20190530','%Y%m%d') );
    INSERT INTO DB2020_genre VALUES (2, 'romance',str_to_date('20041024','%Y%m%d'));
    INSERT INTO DB2020_genre VALUES (3, 'romance',str_to_date('19960316','%Y%m%d'));



    CREATE TABLE DB2020_ON_NETFLIX(
        mov_id          INT NOT NULL,
        on_netflix      VARCHAR(10) NOT NULL,
        service_start_year  VARCHAR(10),
        PRIMARY KEY (mov_id, on_netflix),
        INDEX(mov_id),
        FOREIGN KEY (mov_id) REFERENCES DB2020_MOVIEINFO(MOVIE_ID)
            ON DELETE CASCADE ON UPDATE CASCADE);

    DESCRIBE DB2020_ON_NETFLIX;

    INSERT INTO DB2020_ON_NETFLIX VALUES (1, 'no', NULL);
    INSERT INTO DB2020_ON_NETFLIX VALUES (2, 'yes', '2018');
    INSERT INTO DB2020_ON_NETFLIX VALUES (3, 'yes', '2018');

我想知道是什么造成了这个问题。非常感谢你对我的帮助

这奏效了。自然连接造成了一些冗余。应用左外连接有帮助

 CREATE VIEW DB2020_romance_on_netflix  AS
    SELECT
    DB2020_MOVIEINFO.title, DB2020_MOVIEINFO.plot, DB2020_genre.genre
    FROM
    DB2020_genre left outer join DB2020_MOVIEINFO on DB2020_genre.MOVIE_ID = DB2020_MOVIEINFO.MOVIE_ID
    WHERE
        DB2020_genre.genre = 'romance' and
        DB2020_genre.MOVIE_ID in (SELECT MOVIE_ID
            FROM DB2020_ON_NETFLIX 
            WHERE on_netflix = 'yes');

这起作用了。自然连接造成了一些冗余。应用左外连接有帮助

 CREATE VIEW DB2020_romance_on_netflix  AS
    SELECT
    DB2020_MOVIEINFO.title, DB2020_MOVIEINFO.plot, DB2020_genre.genre
    FROM
    DB2020_genre left outer join DB2020_MOVIEINFO on DB2020_genre.MOVIE_ID = DB2020_MOVIEINFO.MOVIE_ID
    WHERE
        DB2020_genre.genre = 'romance' and
        DB2020_genre.MOVIE_ID in (SELECT MOVIE_ID
            FROM DB2020_ON_NETFLIX 
            WHERE on_netflix = 'yes');

不同的(列名称)。。您正在使用哪个版本的mysql???@scaisEdge,对不起!我正在编辑!我两周前刚下载了它,所以可能我猜是最新的版本。无论如何,带列名的函数对我来说是新的。。而且看起来很奇怪。。你确定你在使用mysql吗?Distinct不是一个函数。MySQL只是忽略了括号。请注意,MySQL中的视图没有任何有用的用途。。您正在使用哪个版本的mysql???@scaisEdge,对不起!我正在编辑!我两周前刚下载了它,所以可能我猜是最新的版本。无论如何,带列名的函数对我来说是新的。。而且看起来很奇怪。。你确定你在使用mysql吗?Distinct不是一个函数。MySQL只是忽略了括号注意MySQL中的视图没有任何用处