【发布时间】:2017-11-23 09:10:36
【问题描述】:
我是 T-SQL 的新手,我在这方面很糟糕(只是学习它,因为它是我学校的必修课)。我搜索了很多,但找不到我的问题的答案。
我有一个名为 book_author 的桥表,有 2 行:Book_ISBN(这是 Books 表中的外键)和 Author_ID(作者表中的外键)。这是我用来创建它的代码:
CREATE TABLE Book_Author (
Book_ISBN BIGINT,
Author_ID BIGINT,
CONSTRAINT Pk_Book_Author PRIMARY KEY (Book_ISBN, Author_ID),
CONSTRAINT FK_B_A_Book_ISBN FOREIGN KEY (Book_ISBN) REFERENCES Book(Book_ISBN),
CONSTRAINT FK_B_A_Author_ID FOREIGN KEY (Author_ID) REFERENCES Author(Author_ID)
)
所以我只想将这些表中的值插入到桥表 (book_author) 中。到目前为止,这对我有用(但影响了 0 行,因此没有添加任何数据):
INSERT INTO Book_Author (Book_ISBN, Author_ID)
SELECT book.Book_ISBN, author.Author_ID
FROM Book_Author
INNER JOIN Book ON Book_Author.Book_ISBN = Book.Book_ISBN
INNER JOIN Author on Book_Author.Author_ID = Author.Author_ID
由于提到的行(来自 books 表和 author 表)已经有数据,我认为 T-SQL 会自动将这些值插入 book_author 表(并且具有相同的列名)。这是我用来向 book 表中插入数据的代码:
INSERT INTO Book (Book_ISBN, Book_Name, Publisher_ID, Edition, Language, Genre, Year_Published)
VALUES ('9780261103573', 'The Fellowship of the Ring', '1', '1', 'English', 'Fantasy Fiction', '1954'),
('9780007203550', 'The Two Towers', '1', '1', 'English', 'Fantasy fiction', '1960'),
('9780007129720', 'The Return of the King', '1','1', 'English', 'Fantasy fiction', '1965'),
('9780399900709', 'The Bourne Identity', '2', '3', 'English', 'Spy thrillers', '1980'),
('9788563560520', 'Quincas Borba', '3', '5', 'Portuguese', 'Romance', '1982'),
('9782864972662', 'Astérix chez les Pictes', '4', '3', 'French', 'Adventure comic books', '2012');
这是我用来向作者表中插入数据的代码:
INSERT INTO Author (Author_ID, Author_FName, Author_LName)
VALUES (1, 'Tolkien', 'J.R.R.'),
(2, 'Robert', 'Ludlum'),
(3, 'Machado', 'de Assis'),
(4, 'Jean-Yves', 'Ferri');
提前感谢您的帮助,我们将不胜感激。
【问题讨论】:
-
请提供您要插入到 Book_Author 表中的示例数据
-
由于
book_authorLink 表还没有任何值(如果我理解正确的话),那么您不可能在该表上使用 JOIN 来获取任何值......因此,鉴于您的书籍和作者列表-您如何知道哪些作者属于哪本书(因此您可以将这些值插入链接表)?!?这正是链接表的目的,所以如果您想在该表中创建值 - 您如何确定哪些作者属于哪些书籍?? -
嗨@ITSGuru!我刚刚添加了更多信息。谢谢!
-
您从要插入的表中选择数据?你确定它有数据?并小心使用内部连接,因为它会删除所有未映射的内容。我们可以看看你的 Book_auto 表吗?
-
不,这里没有什么“自动魔法” - 你有 n 本书和 m 个作者 - 如何他们属于一起吗?这正是链接表应该定义的内容 - 但您不能只是自动完成这项工作 - 您必须定义哪个作者属于哪本书并插入将适当的行放入链接表中以建立这些连接!
标签: sql-server tsql foreign-keys sql-insert