Dúvida com left join

Firebird

14/09/2009

Boa tarde, pessoal!

Tenho dois selects que quero juntar em um só. O primeiro retorna todas as solictações diferentes de zero e o segundo traz os estudos dessas solicitações. Se o estudo da solicitação for ´NEGADO´, eu altero o status da solicitação para ´Liberado para estudo´.

SELECT SOL.ID_SOLICITACAO, SOL.NOME, SOL.SOLICITANTE,
SOL.DEPARTAMENTO, SOL.DESCRICAO,
CASE ESTUDO.DS_STATUS_CICLO_COMPRA_MAILING WHEN ´NEGADO´
THEN ´Liberada para estudo´
ELSE SOL.DESCRICAO END AS STATUS,
SOL.QUANT_INFORMADA, SOL.DT_ENVIO_BUREAU, SOL.DT_SOLICITACAO
FROM
(SELECT S.ID_SOLICITACAO, S.NOME, S.SOLICITANTE,
S.DEPARTAMENTO, T.DESCRICAO, ST.DESCRICAO,
S.QUANT_INFORMADA, S.DT_ENVIO_BUREAU, S.DT_SOLICITACAO
FROM T_SOLICITACAO S, T_SOLICITACAO_STATUS ST, T_TIPO_SOLICITACAO T
WHERE S.STATUS = ST.ID_SOLICITACAO_STATUS
AND S.TP_SOLICITACAO = T.ID_TP_SOLICITACAO
AND S.ID_SOLICITACAO <> 0
ORDER BY ID_SOLICITACAO) AS SOL
LEFT JOIN
(SELECT S.DS_STATUS_CICLO_COMPRA_MAILING, E.ID_SOLICITACAO
FROM T_CICLO_COMPRA_MAILING E, T_STATUS_CICLO_COMPRA_MAILING S
WHERE E.ID_STATUS_CICLO_COMPRA_MAILING = S.ID_STATUS_CICLO_COMPRA_MAILING
AND S.ID_STATUS_CICLO_COMPRA_MAILING NOT IN (6,7,8)
ORDER BY ID_SOLICITACAO, ID_CICLO_COMPRA_MAILING DESC) AS ESTUDO
ON SOL.ID_SOLICITACAO = ESTUDO.ID_SOLICITACAO
ORDER BY ID_SOLICITACAO

O problema é que aparece o seguinte erro: Can´t Prepare , because query is empty.

Não entendi nada, pois ao rodar cada select em separado, eles retornam dados.

Alguém pode me ajudar?

Obrigada!


Freitasmon

Freitasmon

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

14/09/2009

tente assim:
SELECT
  S.ID_SOLICITACAO, S.NOME, S.SOLICITANTE,
  S.DEPARTAMENTO, T.DESCRICAO, ST.DESCRICAO,
  S.QUANT_INFORMADA, S.DT_ENVIO_BUREAU, S.DT_SOLICITACAO
FROM
  T_SOLICITACAO S
INNER JOIN
  T_SOLICITACAO_STATUS ST ON ST.ID_SOLICITACAO_STATUS = S.STATUS
INNER JOIN
  T_TIPO_SOLICITACAO T ON T.ID_TP_SOLICITACAO = S.TP_SOLICITACAO
LEFT JOIN T_CICLO_COMPRA_MAILING E
  ON E.ID_SOLICITACAO = S.ID_SOLICITACAO
LEFT JOIN T_STATUS_CICLO_COMPRA_MAILING S
  ON S.ID_STATUS_CICLO_COMPRA_MAILING = E.ID_STATUS_CICLO_COMPRA_MAILING
  AND NOT S.ID_STATUS_CICLO_COMPRA_MAILING IN (6,7,8)
WHERE 
  S.ID_SOLICITACAO <> 0
ORDER BY
  S.ID_SOLICITACAO



GOSTEI 0
Carlos Mazzi

Carlos Mazzi

14/09/2009

Resolvido ?
GOSTEI 0
POSTAR