在规范化表中插入数据

时间:2017-05-24 09:40:57

标签: mysql sql database

假设我有一个规范化的数据库,

Students (RollNo, Name) - e.g. (1, "John")
Books (BookCode, Name) - e.g. (1, "StoryBook"), (2, "Dictionary")
Loans (RollNo, BookCode) - e.g. (1, 2) 

现在“约翰”想借“Dictianry”;但是我不能在贷款表中插入(“john”,“Dictionary”),  因为它需要BookID和RollNo。

我的后端FW将我限制为每个请求一个查询。

有没有办法在一个sql语句中执行此操作而不首先查找书籍的ID和插入(使用两个单独的SQL)?

2 个答案:

答案 0 :(得分:0)

您可以使用子查询,但这对于插入来说似乎有点复杂。您可以将主键更改为Name而不是RollNoBookCode,但这是不好的做法。

为了解决这个问题,您可以尝试缓存学生和书籍。看来每个请求只限一个查询似乎很奇怪,也许你应该专注于那个?

答案 1 :(得分:0)

试试这个我觉得它会适用于你的情况

insert into Loans (RollNo, BookCode)
    select s.RollNo,b.BookCode from Students s
    full join Books b on 0=0
    where s.Name='John' and b.Name='Dictionary'