gpt4 book ai didi

mySQL - 使用主键组合表,但想使用标题插入组合表

转载 作者:行者123 更新时间:2023-11-30 21:45:29 24 4
gpt4 key购买 nike

我已经搜索并研究了 mySQL 的不同连接和联合命令,但找不到解决我的问题的方法。

我只使用 mySQL 工作了几天,试图学习 mySQL、HTML、CSS、PHP、javascript、python 等来创建我自己的服务器,包括数据库、网页、备份,让我的家互联等。所有非常感谢帮助!提前'Takk'! :)

create database cinema;
use cinema;

create table cinema.genre (
genre_code varchar(3) not null,
genre varchar(45) null,
primary key (genre_code) );

create table cinema.movie (
movie_id int not null auto_increment,
genre varchar(3) null,
released int(4) null,
title varchar(45) not null,
name_director varchar(45) null,
primary key(movie_id),
constraint FK_genre foreign key (genre) references cinema.genre(genre_code) );


create table movie_halls (
hall_id int not null auto_increment,
hall_name varchar(45) not null,
spaces int not null,
primary key (hall_id) );

create table overview (
cinema_per_id int not null auto_increment,
date_time datetime not null, #1000-01-01 00:00:00
hall_id int not null,
movie_id int not null,
number_people int null,
primary key (cinema_per_id) );

insert into cinema.genre values
('COM', 'Comedy'),
('ACT', 'Action'),
('DRA', 'Drama'),
('HOR', 'Horror');

insert into cinema.movie (genre, released, title, name_director) values
('COM', 2010, '2 goats', 'Speilberg, Peter'),
('ACT', 2012, 'Fast5', 'Dramaqueen'),
('DRA', 1995, 'Status quo', 'Turtle, Ninja'),
('ACT', 1950, 'Joker', 'Man, Spider');

insert into movie_halls (hall_name, spaces) values
('Darth Vader', 200),
('Princess Leila', 150),
('Yoda', 1999),
('Obi-Wan Kenobi', 1920);

这就是我想输入到概览中的内容(以便于记住电影和大厅的所有 ID。

insert into overview (date_time, hall_id, movie_id, number_people) values
(2018-04-06 20:00:00, 'Darth Vader', 'Fast5', 120),
(2018-04-06 20:00:00, 'Yoda', 'Joker', 1500),
(2018-04-06 21:30:00, 'Obi-Wan Kenobi', '2 goats', 1200);

并像这样存储: How it should be stored

如果我现在在插入后选择概览,我希望看到以下内容(不要介意日期时间格式 - 只是将它混合起来): Picture dump from excel

我不确定这是否可行,或者我对数据库的一般建模是否有问题。非常感谢任何澄清和帮助!

最佳答案

作为变体,您可以使用子查询进行插入

insert into overview (date_time, hall_id, movie_id, number_people) values
('2018-04-06 20:00:00', (select hall_id from movie_halls where hall_name='Darth Vader'), (select movie_id from movie where title='Fast5'), 120),
('2018-04-06 20:00:00', (select hall_id from movie_halls where hall_name='Yoda'), (select movie_id from movie where title='Joker'), 1500),
('2018-04-06 21:30:00', (select hall_id from movie_halls where hall_name='Obi-Wan Kenobi'), (select movie_id from movie where title='2 goats'), 1200)

然后使用带有JOIN 的查询。例如

SELECT
o.*,
h.hall_name,
m.title AS movie_title
FROM overview o
JOIN movie_halls h ON o.hall_id=h.hall_id
JOIN movie m ON o.movie_id=m.movie_id
ORDER BY o.date_time

关于mySQL - 使用主键组合表,但想使用标题插入组合表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49688805/

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