2014-09-13 37 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