2012-04-04 162 views
0

每次將新用戶添加到我的系統中時,我需要能夠將一組值添加到表中。(SQL)如何根據另一個表的ID將值添加到表中?

添加用戶時,我想查看我的'標籤'表,並在'標記'表中爲每個ID在'Tag_Score'表中插入一個新條目。

我試圖給出的基於東西我在網上找到,但儘管邏輯上似乎聲音,它似乎並不以下是工作

DECLARE @LoopVar INTEGER 
SET @LoopVar = (SELECT MIN(Tag_Score.T_ID) 
FROM Tags) WHILE @LoopVar IS NOT NULL 
BEGIN 
INSERT INTO `a3360218_DD`.`Tag_Score` (
`A_ID` , 
`T_ID` , 
`Score` , 
`Visits` 
) 
VALUES (
'" . $accountID . "', @LoopVar , '0', '0' 
) 
SET @LoopVar = (SELECT MIN(Tag_Score.T_ID) 
FROM TheTable 
WHERE @LoopVar < T_ID) 
END 

的錯誤是:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHILE @LoopVar IS NOT NULL 
BEGIN 
INSERT INTO `a3360218_DD`.`Tag_Score` (

' at line 2 

謝謝advance

Matt

+0

這將真正幫助,如果你解釋多一點*英語*什麼是你正在嘗試做,而不是張貼破碎的代碼(儘管你嘗試了一些東西是很好的)。另外,請張貼'Tags'和'Tag_Score'的表定義 – Bohemian 2012-04-04 15:40:26

+0

我很努力地理解你的問題,但它聽起來像你需要看看[INSERT ... SELECT](http://dev.mysql.com/doc /refman/5.5/en/insert-select.html) – nnichols 2012-04-04 15:43:15

+0

對不起,我有一個很長的一天,只是重新讀這個,你是對的,我的英語是可怕的哈哈!這INSERT ... SELECT的東西似乎是正確的方式,但我從來沒有聽說過它(有點新的這一切)。非常感謝 – 2012-04-04 16:34:49

回答

3

您尚未發佈任何表格佈局,所以我在黑暗中拍攝在這裏,但這種查詢應爲你工作:

INSERT INTO Tag_Score (A_ID, T_ID, Score, Visits) 
SELECT A_ID, T_ID, 0, 0 
FROM Tags 
WHERE A_ID = $accountID; 

注意去除那些不必要的反單引號(即`),它們只有當你有必要一個保留字的模式名稱,看看它現在是多麼可讀!

保持簡單 - 儘可能避免複雜的SQL。

+0

我認爲這可能是'SELECT $ accountID,T_ID,0,0',因爲A_ID不在'Tags'表中。 – 2012-04-04 15:50:09

+0

@JoachimIsaksson你怎麼知道?你可能是對的,但誰會知道 - 他沒有發佈模式。 – Bohemian 2012-04-04 15:52:46

+0

原來他是對的,但如果我需要提出另一個問題,我絕對不會忘記把我的表格結構放在裏面。非常感謝波希米亞人 – 2012-04-04 16:38:49

0

我想你可能想CROSS JOIN,或者也許只是一個普通的刀片...

insert into Tag_Score 
select accountID, t.ID, 0, 0 
from tags t 
-- optional order by 
-- order by t.ID 
相關問題