0

新しいユーザーがシステムに追加されるたびに、一連の値をテーブルに追加できる必要があります。

ユーザーが追加されたら、「Tags」テーブルを調べて、「Tags」テーブルの各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 

前もって感謝します

マット

4

2 に答える 2

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は避けてください。

于 2012-04-04T15:45:04.243 に答える
0

CROSS JOIN、または通常の挿入からの挿入が必要な場合があると思います...

insert into Tag_Score
select accountID, t.ID, 0, 0
from tags t
-- optional order by
-- order by t.ID 
于 2012-04-04T15:47:17.163 に答える