Mysql电影数据库
我正在创建一个电影数据库,我想我已经完成了它的设计,但是我的结果并没有像我希望的那样回来。我现在数据库中只有2部电影的详细信息。我正试图让它停止显示重复的信息 你能看一下并给出反馈吗 提前谢谢你的帮助Mysql电影数据库,mysql,movie,Mysql,Movie,我正在创建一个电影数据库,我想我已经完成了它的设计,但是我的结果并没有像我希望的那样回来。我现在数据库中只有2部电影的详细信息。我正试图让它停止显示重复的信息 你能看一下并给出反馈吗 提前谢谢你的帮助 /* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50525 Source Host : localhost Source Databas
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50525
Source Host : localhost
Source Database : MovieDB
Target Server Version : 50525
File Encoding : utf-8
Date: 09/12/2013 22:06:21 PM
*/
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `FORMAT`
-- ----------------------------
DROP TABLE IF EXISTS `FORMAT`;
CREATE TABLE `FORMAT` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`Formats` varchar(10) NOT NULL DEFAULT '',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `FORMAT_ID`
-- ----------------------------
DROP TABLE IF EXISTS `FORMAT_ID`;
CREATE TABLE `FORMAT_ID` (
`MovieID` int(11) NOT NULL DEFAULT '0',
`FormatID` int(11) NOT NULL DEFAULT '0',
`Num_Discs` int(128) DEFAULT NULL,
`Locations` varchar(128) DEFAULT NULL,
PRIMARY KEY (`MovieID`,`FormatID`),
KEY `FormatID` (`FormatID`),
CONSTRAINT `FORMAT_ID_ibfk_1` FOREIGN KEY (`MovieID`) REFERENCES `MOVIE` (`ID`),
CONSTRAINT `FORMAT_ID_ibfk_2` FOREIGN KEY (`FormatID`) REFERENCES `FORMAT` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `GENRE`
-- ----------------------------
DROP TABLE IF EXISTS `GENRE`;
CREATE TABLE `GENRE` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Genres` varchar(50) NOT NULL DEFAULT '',
`Descriptions` varchar(128) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `GENRE_ID`
-- ----------------------------
DROP TABLE IF EXISTS `GENRE_ID`;
CREATE TABLE `GENRE_ID` (
`MovieID` int(11) NOT NULL DEFAULT '0',
`GenreID` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`MovieID`,`GenreID`),
KEY `GenreID` (`GenreID`),
CONSTRAINT `GENRE_ID_ibfk_2` FOREIGN KEY (`GenreID`) REFERENCES `GENRE` (`ID`),
CONSTRAINT `GENRE_ID_ibfk_1` FOREIGN KEY (`MovieID`) REFERENCES `MOVIE` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `MOVIE`
-- ----------------------------
DROP TABLE IF EXISTS `MOVIE`;
CREATE TABLE `MOVIE` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Titles` varchar(128) NOT NULL DEFAULT '',
`Alt_Titles` varchar(128) DEFAULT NULL,
`Types` varchar(10) NOT NULL DEFAULT '',
`Synopsis` varchar(128) DEFAULT NULL,
`Images` varchar(128) DEFAULT NULL,
`Num_Eps` int(10) DEFAULT '0',
`Catagories` varchar(50) NOT NULL DEFAULT '',
`Duration` time DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `RENT`
-- ----------------------------
DROP TABLE IF EXISTS `RENT`;
CREATE TABLE `RENT` (
`MovieID` int(11) NOT NULL DEFAULT '0',
`Rents` varchar(3) NOT NULL DEFAULT '',
`Who` varchar(128) NOT NULL DEFAULT '',
`Note` varchar(128) DEFAULT NULL,
PRIMARY KEY (`MovieID`,`Rents`,`Who`),
CONSTRAINT `RENT_ibfk_1` FOREIGN KEY (`MovieID`) REFERENCES `MOVIE` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
sql:
这是我的结果:
Titles,Types,Num_Eps,Catagories,Duration,Formats,Num_Discs,Genres
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Mecha
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Police
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Psychological
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Sci-Fi
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Cyberpunk
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Mecha
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Police
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Psychological
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Sci-Fi
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Cyberpunk
Summer Wars,Movie,1,Anime,01:54:00,DVD,1,Comedy
Summer Wars,Movie,1,Anime,01:54:00,DVD,1,Sci-Fi
Summer Wars,Movie,1,Anime,01:54:00,HD,,Comedy
Summer Wars,Movie,1,Anime,01:54:00,HD,,Sci-Fi
几点。我会使用完全连接语法
FROM MOVIE JOIN GENRE ON MOVIE.ID=GENRE_ID.MovieID
而不是现在的where子句
然后,你可能想尝试将你的风格组合成一行,例如机甲、警察、心理等等。几点。我会使用完全连接语法
FROM MOVIE JOIN GENRE ON MOVIE.ID=GENRE_ID.MovieID
而不是现在的where子句
然后,你可能想尝试将你的类型连接成一行,例如机械、警察、心理等等。更新:多亏了Vulcronos,如果我使用 类型:
select distinct Titles, Types, Num_Eps, Catagories, Duration, Genres
FROM MOVIE JOIN GENRE_ID ON MOVIE.ID=GENRE_ID.MovieID, GENRE
where GENRE_ID.GENREID=GENRE.ID
order by Titles;
格式:
select distinct Titles, Types, Num_Eps, Catagories, Duration, Formats, Num_Discs, Locations
FROM MOVIE JOIN FORMAT_ID ON MOVIE.ID=FORMAT_ID.MovieID, FORMAT
where FORMAT_ID.FORMATID=FORMAT.ID
order by Titles;
有没有办法把两者结合起来 所以我会得到这样的结果:
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Mecha
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Police
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Psychological
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Sci-Fi
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Cyberpunk
Summer Wars,Movie,1,Anime,01:54:00,DVD,1,Comedy
Summer Wars,Movie,1,Anime,01:54:00,HD,,Sci-Fi
它将列出一次类型和一次格式。当然,对于多个体裁,除非有办法解决,否则格式会重复,但至少会显示一次所有格式以及一次体裁
谢谢你的帮助。更新:多亏了Vulcronos,如果我使用 类型:
select distinct Titles, Types, Num_Eps, Catagories, Duration, Genres
FROM MOVIE JOIN GENRE_ID ON MOVIE.ID=GENRE_ID.MovieID, GENRE
where GENRE_ID.GENREID=GENRE.ID
order by Titles;
格式:
select distinct Titles, Types, Num_Eps, Catagories, Duration, Formats, Num_Discs, Locations
FROM MOVIE JOIN FORMAT_ID ON MOVIE.ID=FORMAT_ID.MovieID, FORMAT
where FORMAT_ID.FORMATID=FORMAT.ID
order by Titles;
有没有办法把两者结合起来 所以我会得到这样的结果:
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Mecha
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Police
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Psychological
Ghost in the Shell,Movie,1,Anime,01:23:00,DVD,1,Sci-Fi
Ghost in the Shell,Movie,1,Anime,01:23:00,Bluray,1,Cyberpunk
Summer Wars,Movie,1,Anime,01:54:00,DVD,1,Comedy
Summer Wars,Movie,1,Anime,01:54:00,HD,,Sci-Fi
它将列出一次类型和一次格式。当然,对于多个体裁,除非有办法解决,否则格式会重复,但至少会显示一次所有格式以及一次体裁
谢谢你的帮助。可能没有人再看这个帖子了,但我想让未来的观点和帮助我的人知道我在问题中找到了我想要的东西
select DISTINCT m.Title,
group_concat(DISTINCT g.Genre) as Genres,
group_concat(DISTINCT f.Format) as Formats
from MOVIES m
left join MOVIEGENRES mg on m.Code=mg.MovieCode
left join GENRES g on mg.GenCode=g.Code
left join MOVIEFORMATS mf on m.Code=mf.MovieCode
left join FORMATS f on mf.FormCode=f.Code
group by m.Code;
可能没有人再看这个帖子了,但我想让未来的观点和帮助我的人知道我在这个问题上找到了什么
select DISTINCT m.Title,
group_concat(DISTINCT g.Genre) as Genres,
group_concat(DISTINCT f.Format) as Formats
from MOVIES m
left join MOVIEGENRES mg on m.Code=mg.MovieCode
left join GENRES g on mg.GenCode=g.Code
left join MOVIEFORMATS mf on m.Code=mf.MovieCode
left join FORMATS f on mf.FormCode=f.Code
group by m.Code;
期望的输出是什么?要像瓦克罗诺斯在他的回答中建议的那样将所有类型都放在一列中?理想的输出是将特定电影的所有类型列一次,格式也列一次。上面的期望输出示例。期望输出是什么?要像瓦克罗诺斯在他的回答中建议的那样将所有类型都放在一列中?理想的输出是将特定电影的所有类型列一次,格式也列一次。上面的期望输出示例。那么你说做这样的事情?从电影中选择不同的标题、类型、数量、类别、持续时间、类型加入电影上的流派ID。ID=流派ID.MovieID,其中流派ID.GENREID=流派ID按标题排序;对这看起来是个开始现在这一类型已经很好用了,我会用同样的方式处理格式吗?再次感谢你的帮助。在连接两个表时,最好使用join on语法。清楚地说明你在做什么。我知道这对格式有用,但是有没有办法将这两种格式结合起来,从两种格式中得到一个输出,但至少只显示每种类型的一个列表和每种格式的一个列表?那么你说的是这样做吗?从电影中选择不同的标题、类型、数量、类别、持续时间、类型加入电影上的流派ID。ID=流派ID.MovieID,其中流派ID.GENREID=流派ID按标题排序;对这看起来是个开始现在这一类型已经很好用了,我会用同样的方式处理格式吗?再次感谢你的帮助。在连接两个表时,最好使用join on语法。清楚地说明你在做什么。我知道这是为了格式,但是有没有办法将两者结合起来,从两者中获得输出,但至少只显示每种类型的一个列表和每种格式的一个列表?“有没有办法将两者结合起来?”我知道你已经解决了问题,这已经过时了,但对于您将来的问题,不要在回答中再问其他问题-请编辑您原来的问题,或者在没有关联的情况下问新问题。:)“有没有办法把这两个问题结合起来?”我知道你已经解决了你的问题,这已经过时了,但是对于你未来的问题,不要在回答中再问其他问题-编辑你原来的问题,或者如果没有关系,问一个新的问题。:)