Mysql电影数据库

标签 mysql movie

我正在创建一个电影数据库,我想我已经完成了它的设计,但是我的结果并没有像我希望的那样返回。我现在数据库中只有 2 部电影的详细信息。我试图让它停止显示重复信息。

你能看看并提供反馈吗?

提前感谢您的帮助。

/*
 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:

select distinct Titles, Types, Num_Eps, Catagories, Duration, Formats, Num_Discs, Genres
from MOVIE, FORMAT, FORMAT_ID, GENRE, GENRE_ID
where MOVIE.ID=GENRE_ID.MovieID
AND GENRE_ID.GenreID=GENRE.ID
and MOVIE.ID=FORMAT_ID.MovieID
AND FORMAT_ID.FormatID=FORMAT.ID
order by Titles;

这是我的结果:

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 子句。

然后您可能想尝试 GROUP_CONCAT(expr) 将您的流派连接成一行,例如。机甲、警察、心理等……

关于Mysql电影数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905533/

相关文章:

java - 如何使用 $_POST 和 Volley 将整个查询从 Android 传递到 PHP 文件?

mysql - 为选择建立索引 mysql 表

mysql - 左连接条件

mysql - SQL - 选择月份中的所有客户

cocoa - 使用 QuickTime 影片 View 时崩溃

matlab - movie2avi - 如何修复帧大小?

iphone - 如何在给定时间暂停电影?IOS

php - Cakephp 3.x : SQLSTATE[HY000]: General error: 11 database disk image is malformed

Neo4j:查找出演和导演任何电影的人