2009-08-26 8 views
0

J'essaie d'exécuter la requête ci-dessous pour inclure les résultats dans un rapport et j'obtiens une erreur Operand should contain 1 column # 1241. Je n'ai pas été capable de comprendre la cause de cela. Si je lance cette partie par lui-même, je ne reçois pas d'erreur: (pct_return_1 * .25) + (pct_return_2 * .25) + (pct_return_3 * .15) + (pct_return_4 * .15) + (pct_return_5 * .2)L'opérande mySQL doit contenir une erreur de colonne

Voici le code:

DROP TABLE IF EXISTS temp_5; 
CREATE TABLE temp_5 (
    date_value date default NULL, 
    pct_return_portfolio double default NULL, 
    pct_return_benchmark double default NULL); 

INSERT INTO temp_5 (date_value, pct_return_portfolio, pct_return_benchmark) 
SELECT 
(date_value, 
    (pct_return_1 * .25) + 
    (pct_return_2 * .25) + 
    (pct_return_3 * .15) + 
    (pct_return_4 * .15) + 
    (pct_return_5 * .2) 
    FROM Temp_4), 
pct_return_6) 
FROM temp_4; 

Répondre

0

Essayez de supprimer la première occurrence de FROM Temp_4 (celui juste après la deuxième valeur dans la sous-requête) .

Edit: aussi les groupes doubles parenthèses à cocher, comme dans cet exemple:

INSERT INTO table2 (field1, field2, field3, field4) (SELECT 'value1 from user input', field1, field2, field3 from table1) 

est donnée sur cette page en ce qui concerne les sous-requêtes d'insertion: http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

+0

J'ai essayé votre suggestion et voici ma véritable requête. La requête ne s'est pas exécutée correctement. J'ai reçu le même message d'erreur. INSERT INTO temp_5 (date_value, pct_return_portfolio, pct_return_benchmark) SELECT (date_value, ( (pct_return_1 * 0,25) + (pct_return_2 * 0,25) + (pct_return_3 * 0,15) + (pct_return_4 * 0,15) + (pct_return_5 * .2) ), \t pct_return_6) FROM temp_4; – user163129

+0

Dans l'exemple que j'ai trouvé, l'instruction select ou la sous-requête est complètement entre parenthèses. Donc, sur votre déclaration, placez une parenthèse ouverte avant "SELECT" et une autre après "FROM temp_4" si tout va bien pour vous. Les sous-requêtes sont difficiles! – JYelton

0

Utilisation:

INSERT INTO temp_5 
    (date_value, pct_return_portfolio, pct_return_benchmark) 
SELECT date_value, 
     pct_return_1 * .25 + pct_return_2 * .25 + pct_return_3 * .15 + pct_return_4 * .15 + pct_return_5 * .2, 
     pct_return_6 
    FROM temp_4; 

Ordre mathématique des opérations garantit que les parenthèses/parenthèses ne sont pas nécessaires.

Questions connexes