Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Uerlen Santos

[Resolvido] Erro ao executar Consulta

Recommended Posts

Saudações Galera...

 

Estou com o seguinte erro:

 

SQLSTATE[HY000]: General error: 10007 The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified. [10007] (severity 5) [(null)]

 

Ao executar o seguinte codigo:

$sql = "SELECT p.Pac, pp.Dtp AS DtaAtend, prot.Descricao AS Protocolo,
                               ps1.DAB AS Espec, pf.Nome AS Profissional,
                               pta.Apresentacao AS Tipo_Atend
                               FROM Pacientes p
                               INNER JOIN Pacientes_Protocolos pp ON (p.Pac=pp.Pac)
                               INNER JOIN Protocolos prot ON (pp.Pro=prot.Pro AND pp.St=1)
                               INNER JOIN CorpoClinico cc ON (p.Mps=cc.Mps)
                               INNER JOIN Pessoa_Fisica pf ON (cc.Npf=pf.Npf)
                               INNER JOIN Produtos_Servicos ps1 ON (p.Esp=ps1.Cod)
                               LEFT JOIN Prd_Tipo_Atendimento pta ON (p.Id_Ret=pta.Chv)
                               WHERE p.Npf=? ";

                       if ($_REQUEST["protocolo"] != null) {
                               $sql .= "AND pp.Pro=? ";
                       } else {
                               $sql .= "AND pp.Pro<>? ";
                       }

                       $sql .= " UNION SELECT p.Pac, pp.Dtp AS DtaAtend, prot.Descricao AS Protocolo,
                               ps1.DAB AS Espec, pf.Nome AS Profissional,
                               pta.Apresentacao AS Tipo_Atend
                               FROM Historico_Pacientes p
                               INNER JOIN Pacientes_Protocolos pp ON (p.Pac=pp.Pac)
                               INNER JOIN Protocolos prot ON (pp.Pro=prot.Pro AND pp.St=1)
                               INNER JOIN CorpoClinico cc ON (p.Mps=cc.Mps)
                               INNER JOIN Pessoa_Fisica pf ON (cc.Npf=pf.Npf)
                               INNER JOIN Produtos_Servicos ps1 ON (p.Esp=ps1.Cod)
                               LEFT JOIN Prd_Tipo_Atendimento pta ON (p.Id_Ret=pta.Chv)
                               WHERE p.Npf=? ";

                       if ($_REQUEST["protocolo"] != null) {
                               $sql .= "AND pp.Pro=? ";
                       } else {
                               $sql .= "AND pp.Pro<>? ";
                       }

                       return $this->getPO()->loadDataWithSortExpression($sql, $startRow, $pageSize, null, array($idPaciente, $idProtocolo,$idPaciente, $idProtocolo));

Gostaria de saber se alguém já teve esse problema e conseguiu solucionar.

 

Referencia em topico inicial:

http://forum.imasters.com.br/topic/460785-erro-ao-executar-consulta/

 

Att

Uerlen Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em que campo você quer colocar um ORDER BY?!

 

Coloque em um campo comum no seu UNION

 

exemplo:

declare @teste1 table (id int identity (1,1), campoA varchar(50))
declare @teste2 table (id int identity (1,1), campoB varchar(50))


insert into @teste1 values ('campo xxxA')
insert into @teste1 values ('campo xxxB')
insert into @teste1 values ('campo xxxC')

insert into @teste2 values ('campo xxxA2')
insert into @teste2 values ('campo xxxB2')
insert into @teste2 values ('campo xxxC2')


select * from @teste1
union all
select * from @teste2
order by campoA

 

Exemplo com erro:

declare @teste1 table (id int identity (1,1), campoA varchar(50))
declare @teste2 table (id int identity (1,1), campoB varchar(50))


insert into @teste1 values ('campo xxxA')
insert into @teste1 values ('campo xxxB')
insert into @teste1 values ('campo xxxC')

insert into @teste2 values ('campo xxxA2')
insert into @teste2 values ('campo xxxB2')
insert into @teste2 values ('campo xxxC2')


select * from @teste1
union all
select * from @teste2
order by campoB

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi...

 

O Order entra no campo pp.Dtp que é comum em ambos selects.

 

Muito estranho esse erro... ta me fritando os neurônios... tenso!!!

 

Mas obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como nao tenho a estrutura nem os tipos de dados dos campos, se você rodar direto no MMS ele gera algum erro???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.