2013-09-14 3 views
-1

Следующий запрос не выполняется, поскольку оператор select в условии where создает массив идентификаторов. Im относительно новый для использования sql, поэтому любая помощь в том, как исправить, будет оценена по достоинству.mysql query, где select производит массив

SELECT sum(txnpnl) FROM tdmarketprob.pnl_transactions 
    WHERE instrumentid = (SELECT instrumentid 
    FROM tdmarketprob.pnl_instruments 
    WHERE symbol="ES") and txnpnl <>0; 

ответ

0

Try: SELECT sum(txnpnl) FROM tdmarketprob.pnl_transactions WHERE instrumentid IN (SELECT instrumentid FROM tdmarketprob.pnl_instruments WHERE symbol="ES") and txnpnl <>0;

0

Лучше использовать объединение, чем вложенный запрос. Как это:

SELECT sum(t.txnpnl) FROM tdmarketprob.pnl_transactions t 
inner join tdmarketprob.pnl_instruments i 
on t. instrumentid = t. instrumentid 
WHERE i.symbol="ES" and t.txnpnl <>0; 

Вы недостаточно конкретны на какой результат вы хотите получить, так что я не уверен, что этот ответ будет достаточно.