【问题标题】:Display all records even if NULL显示所有记录,即使为 NULL
【发布时间】:2013-06-11 22:27:51
【问题描述】:

我在下面有一个视图,其中包含我想要显示的所有内容,但是只有在每个表格中为特定电影添加了所有内容时它才会显示(如果这样的话)。就像添加了电影一样,只有在副本、演员、角色和流派已与该特定电影相关联时才会显示视图,但是如果没有为电影添加任何内容,则不会显示。我是这方面的新手,所以任何帮助都将不胜感激。

CREATE VIEW viewAllMovieDetails AS
SELECT `tblMovie`.`MovieName`, `tblCopy`.`CpyEdition`, `tblCopy`.`CpyCondition`,
        `tblCopy`.`CpyAmountPaid`, `tblCopy`.`CpyNote`, `tblMovie`.`MovieRating`, 
        `tblMovie`.`MovieLength`,`tblMovie`.`MovieYear`, `tblActor`.`ActLastName`, 
        `tblActor`.`ActFirstName`, `tblRole`.`Role`, `tblMovieGenre`.`GenGenre`
FROM `tblCopy`, `tblMovie`, `tblActor`, `tblRole`, `tblMovieGenre`    
WHERE `tblCopy`.`MovieID` = `tblMovie`.`MovieID` AND `tblRole`.`MovieID` = `tblMovie`.`MovieID` 
    AND `tblRole`.`ActID` = `tblActor`.`ActID` AND `tblMovieGenre`.`MovieID` =                 `tblMovie`.`MovieID`;

【问题讨论】:

标签: mysql database view


【解决方案1】:

您应该使用左连接。如果它们是任何 NULL,它们将显示在这种类型的连接中。

CREATE VIEW viewAllMovieDetails AS
SELECT tblMovie.MovieName, tblCopy.CpyEdition, tblCopy.CpyCondition,
        tblCopy.CpyAmountPaid, tblCopy.CpyNote, tblMovie.MovieRating, 
        tblMovie.MovieLength,tblMovie.MovieYear, tblActor.ActLastName, 
        tblActor.ActFirstName, tblRole.Role, tblMovieGenre.GenGenre
FROM tblCopy   
LEFT JOIN tblMovie tm USING(MovieID)
LEFT JOIN tblActor ta USING(ActID)
LEFT JOIN tblRole tr ON tr.ActID = ta.ActID
LEFT JOIN tblMovieGenre tg ON tg.MovieID = tm.MovieID;

使用别名也是一种好习惯;) 如果您将条件置于内部而不是左联接的位置。

【讨论】:

  • 它给了我这个错误:错误代码:1054。'from 子句'中的未知列'ActID'。
  • 创建视图 viewAllMovieDetails AS SELECT tblMovie.MovieName, tblCopy.CpyEdition, tblCopy.CpyCondition, tblCopy.CpyAmountPaid, tblCopy.CpyNote, tblMovie.MovieRating, tblMovie.MovieLength,tblMovie.MovieYear, tblActor.ActLastName, .ActFirstName, tblRole.Role, tblMovieGenre.Genre 从 tblMovie 左加入 tblCopy 上 tblCopy.MovieID = tblMovie.MovieID 左加入 tblRole ON tblMovie.MovieID = tblRole.MovieID 左加入 tblActor ON tblActor.ActID = blVietblMovieGen.ActID .MovieID = tblMovie.MovieID;
  • np。 (但下次)创建您的表格将不胜感激;)
【解决方案2】:

使用“左连接”而不是“位置”

CREATE VIEW viewAllMovieDetails AS
SELECT `tblMovie`.`MovieName`, `tblCopy`.`CpyEdition`, `tblCopy`.`CpyCondition`,
        `tblCopy`.`CpyAmountPaid`, `tblCopy`.`CpyNote`, `tblMovie`.`MovieRating`, 
        `tblMovie`.`MovieLength`,`tblMovie`.`MovieYear`, `tblActor`.`ActLastName`, 
        `tblActor`.`ActFirstName`, `tblRole`.`Role`, `tblMovieGenre`.`GenGenre`
FROM `tblMovie` left join tblCopy on tblMovie.mouvieId=tblCopy.mouvieId ...etc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 2014-06-09
    • 2017-04-29
    • 1970-01-01
    • 2013-11-17
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多