funciona no interbase, mas não funciona no FireBird
Até agora não tive problemas de compatibilidade entre o Interbase e o Firebird, porém ao migrar um sistema do Interbase para o Firebird deu a mensagem:
invalid column reference
Pude reparar que foi no group by. Se eu uso a função sum(), Max(), avg(), funciona perfeitamente, mas se é um select acontece o problema (e só acontece no FireBird).
A pergunta é: Como posso contornar este problema sem usar uma stored procedure?
o código é o seguinte:
SELECT P.COD_PRODUTO,
PC.COD_COR,
GP.COD_GRADE,
IG.COD_ITEM_GRADE,
( SELECT SUM(QT_REAL)
FROM PRODUTOS_ESTOQUES PE
WHERE PE.COD_PRODUTO = P.COD_PRODUTO AND
PE.COD_COR = PC.COD_COR AND
PE.COD_GRADE = IG.COD_GRADE AND
PE.COD_ITEM_GRADE = IG.COD_ITEM_GRADE )
FROM PRODUTOS P LEFT JOIN PRODUTOS_CORES PC ON P.COD_PRODUTO = PC.COD_PRODUTO
LEFT JOIN GRADES_PRODUTOS GP ON P.COD_PRODUTO = GP.COD_PRODUTO
LEFT JOIN ITENS_GRADES IG ON GP.COD_GRADE = IG.COD_GRADE
GROUP BY P.COD_PRODUTO,
PC.COD_COR,
GP.COD_GRADE,
IG.COD_ITEM_GRADE
invalid column reference
Pude reparar que foi no group by. Se eu uso a função sum(), Max(), avg(), funciona perfeitamente, mas se é um select acontece o problema (e só acontece no FireBird).
A pergunta é: Como posso contornar este problema sem usar uma stored procedure?
o código é o seguinte:
SELECT P.COD_PRODUTO,
PC.COD_COR,
GP.COD_GRADE,
IG.COD_ITEM_GRADE,
( SELECT SUM(QT_REAL)
FROM PRODUTOS_ESTOQUES PE
WHERE PE.COD_PRODUTO = P.COD_PRODUTO AND
PE.COD_COR = PC.COD_COR AND
PE.COD_GRADE = IG.COD_GRADE AND
PE.COD_ITEM_GRADE = IG.COD_ITEM_GRADE )
FROM PRODUTOS P LEFT JOIN PRODUTOS_CORES PC ON P.COD_PRODUTO = PC.COD_PRODUTO
LEFT JOIN GRADES_PRODUTOS GP ON P.COD_PRODUTO = GP.COD_PRODUTO
LEFT JOIN ITENS_GRADES IG ON GP.COD_GRADE = IG.COD_GRADE
GROUP BY P.COD_PRODUTO,
PC.COD_COR,
GP.COD_GRADE,
IG.COD_ITEM_GRADE
Fsflorencio
Curtidas 0
Respostas
Afarias
25/07/2003
só um chute, vc já tentou:
{...}
( SELECT SUM(PE.QT_REAL) /* repare o PE em QT_REAL */
FROM PRODUTOS_ESTOQUES PE
{...}
T+
{...}
( SELECT SUM(PE.QT_REAL) /* repare o PE em QT_REAL */
FROM PRODUTOS_ESTOQUES PE
{...}
T+
GOSTEI 0