2014-09-13 101 views
1

我到处搜索了一个答案,找不到任何人,所以我使出了自己的帖子。这是一个大学任务。我正在使用HeidiSQL。SQL INSERT INTO语句..错误,我对SQL非常陌生

这是我的代码

INSERT INTO 
loan(patronCode,bookCode,loanDate,dueDate) 
VALUES 
(
SELECT 
    patron.patronCode 
WHERE 
    patron.fname='Jacob' AND patron.lname='Simmons', 
SELECT 
    book.bookCode 
WHERE 
    book.bookTitle='The Agony And The Empathy', 
'2014-09-10', 
'2014-10-01' 
), 
(
SELECT 
    patron.patronCode 
WHERE 
    patron.fname='Jacob' AND patron.lname='Simmons', 
SELECT 
    book.bookCode 
WHERE 
    book.bookTitle='Kevin Rudd: The Biography', 
'2014-09-10', 
'2014-10-01' 
) 
FROM 

loan 
INNER JOIN patron 
    ON loan.patronCode=patron.patronCode 
INNER JOIN book 
ON loan.bookCode=book.bookCode; 

这是我的错误信息:

SQL错误(1064):你在你的SQL synstax一个错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“SELECT patron.patronCode WHERE patron.fname =”雅” AND patron.lname =‘硅’在行5

回答

1

insert语句需要采取以下形式:

INSERT INTO TABLENAME(FIELDNAME1, FIELDNAME2...) 
VALUES('HARDCODED_VALUE1', 'HARDCODED_VALUE2'...) 

你有一个插入的一个逻辑混合这选择语句。看起来像这样:

INSERT INTO TABLENAME(FIELDNAME1, FIELDNAME2...) 
SELECT Column1, Column2... 
FROM TABLENAME 

您有2个不同的插入这里。也许他们可以结合更多的信息。此外,你不指出​​如何加入patronbook,可能他们没有,所以我已经离开了联盟。

这是第一个,第二个可以在它之后进行图案化。

INSERT INTO loan(patronCode,bookCode,loanDate,dueDate) 
SELECT patron.patronCode,book.bookCode,'2014-09-10','2014-10-01' 
FROM patron, book 
WHERE 
    patron.fname='Jacob' AND patron.lname='Simmons' 
    and book.bookTitle='The Agony And The Empathy' 
+0

谢谢,解决了它。显然,我有很多东西要学习SQL,因为我不明白为什么没有内部联接语句就可以工作。 – user3675304 2014-09-13 05:22:00

+0

SQL89语法(旧样式)以这种方式工作,连接发生在'where'部分。 SQL92引入了'inner join'语法。如果你有不止一位赞助人名叫雅各布西蒙斯,或者有不止一本名为“痛苦与同情”的书,那么它会在你的贷款表中插入2条记录。因此,请确保您的“where”标准足够紧密,以便为您提供正确数量的结果。 (首先运行选择部分以确保您要插入的内容) – paqogomez 2014-09-13 05:25:07

+0

为了澄清,您只是说,给我所有来自顾客表的东西,并将其加入书表中符合这些标准的所有内容。因此,如果没有像贷款一样的匹配身份证,它很容易获得比您想要的更多。 – paqogomez 2014-09-13 05:27:57

0

我相信SELECT语句的语法为:

SELECT patronCode FROM tablename WHERE .... 
+0

OP的声明中出现了相当多的错误。 – paqogomez 2014-09-13 05:17:25

+0

我在移动,所以只是看了看,并阅读错误陈述。让我看看现在还有什么不对。 – user3777326 2014-09-13 05:21:25