Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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!
Como nao tenho a estrutura nem os tipos de dados dos campos, se você rodar direto no MMS ele gera algum erro???
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))
union all select * from @teste2 order by campoAdeclare @teste2 table (id int identity (1,1), campoB varchar(50))
Exemplo com erro:
declare @teste1 table (id int identity (1,1), campoA varchar(50))
union all select * from @teste2 order by campoBdeclare @teste2 table (id int identity (1,1), campoB varchar(50))