2009-08-26 11 views
0

Ich versuche, die Abfrage weiter unten ausführen, um die Ergebnisse in einem Bericht enthalten sein und bin immer einen Operand should contain 1 column Fehler # 1241. Ich bin nicht in der Lage gewesen, den Grund dafür herauszufinden. Wenn ich diesen Teil von selbst laufen bekomme ich keine Fehler: (pct_return_1 * .25) + (pct_return_2 * .25) + (pct_return_3 * .15) + (pct_return_4 * .15) + (pct_return_5 * .2)mySQL Operand 1 Spalte Fehler enthalten sollte

Hier ist der 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; 

Antwort

0

Versuchen Sie das erste Vorkommen von FROM Temp_4 entfernen (die man nur nach dem zweiten Wert in der Unterabfrage) .

Edit: Auch überprüfen Klammern Gruppierungen, wie in diesem Beispiel:

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

, die auf dieser Seite in Bezug auf Einsatz Subqueries gegeben: http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

+0

habe ich versucht, die Vorschläge und unten ist meine eigentliche Abfrage. Die Abfrage wurde nicht erfolgreich ausgeführt. Ich habe dieselbe Fehlermeldung erhalten. 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) ), \t pct_return_6) VON temp_4; – user163129

+0

Im Beispiel fand ich die select-Anweisung oder Unterabfrage in Klammern vollständig umschlossen. Also auf Ihre Aussage, legen Sie eine öffnende Klammer vor „SELECT“ und eine andere nach „FROM temp_4“ hoffentlich die für Sie arbeitet. Unterabfragen sind wählerisch! – JYelton

0

Verwendung:

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; 

Mathematische Ordnung von Operationen stellt sicher, dass Klammern/Klammern nicht erforderlich sind.

Verwandte Themen