Fórum Dúvida com left join #60857
14/09/2009
0
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!
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
Curtir tópico
+ 0
Responder
Posts
15/09/2009
Emerson Nascimento
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
Responder
Gostei + 0
04/07/2010
Carlos Mazzi
Resolvido ?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)