我是 SQLite 和 SQL 初学者,所以请多多包涵。我正在尝试创建一个简单的播客索引数据库。EPISODE
这是 my 、CAST_MEMBER
和EPISODE_CAST
表的架构。
CREATE TABLE EPISODE
(
id INTEGER PRIMARY KEY,
show_number INTEGER UNIQUE NOT NULL,
air_date DATE UNIQUE NOT NULL,
runtime VARCHAR(255) NOT NULL
);
CREATE TABLE CAST_MEMBER
(
id INTEGER PRIMARY KEY,
person_name VARCHAR(255) UNIQUE NOT NULL
);
CREATE TABLE EPISODE_CAST
(
episode_id INTEGER NOT NULL,
cast_member_id INTEGER NOT NULL,
PRIMARY KEY(episode_id, cast_member_id),
FOREIGN KEY(episode_id) REFERENCES EPISODE(id),
FOREIGN KEY(cast_member_id) REFERENCES CAST_MEMBER(id)
);
我正在尝试找到一种快速填充 EPISODE_CAST 表的方法。我知道所有的关系应该是什么,我只是不想写一百万个插入语句。例如,节目的每一集都有一位演员,所以我自然希望在表格中添加 550 行
episode_id | cast_member_id
===========================
1 | 1
2 | 1
3 | 1
… 等等。
所以这是我写的查询
INSERT INTO EPISODE_CAST (episode_id, cast_member_id) VALUES
((SELECT id FROM EPISODE WHERE show_number BETWEEN 1 AND 550),
(SELECT id FROM CAST_MEMBER WHERE person_name='John Smith'));
但我只插入了一行。(第 1|1 行。)所以我显然在这里遗漏了一些东西。某种循环……
一旦我有了那个演员,我也想和其他演员做类似的事情。但对他们来说,我将使用一个IN
包含该人所在的所有剧集的子句(大多数是不连续的)。
再次为我的幼稚感到抱歉。但感谢您的帮助。