Ir para conteúdo

Arquivado

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

BinSilva

SUBSELECT me retornar + de 1 registro em um campo

Recommended Posts

Olá pessoal,

 

Estou com a seguinte dúvida, tenho um subselect que irá me retornar 1 ou + registros, sendo que o MySql irá me dar o erro 1242: Subquery returns more than 1 row, porém, precisava de agrupar esses dados em um campo, não sei se isso é possível, segue abaixo minha query. Na parte de vermelho seria onde eu precisaria consular os exames em outra tabela que existem para o pedido consultado, e retorná-los.

 

SELECT PD.numr_pedido,
PD.info_status,
EM.nome_empresa,
PD.data_pedido,
CO.nome_convenio,
PD.codg_dentista,
DE.nome_pessoa as nome_dentista,
DE.numr_cro,
ED.info_telefone as telefone_dentista,
PD.codg_paciente,
PA.nome_pessoa as nome_paciente,
EP.info_telefone as telefone_paciente,
PA.data_nascimento,
(SELECT COUNT(IP.codg_exame)
FROM tb_item_pedido IP INNER JOIN tb_exame EX ON (IP.codg_exame = EX.codg_exame)
WHERE IP.numr_pedido = 601022) AS exames,

PD.data_referencia,
PD.data_cancelamento,
PD.info_dentes,
DE.info_email,
EN.nome_tipoentrega
FROM tb_pedido PD
INNER JOIN tb_pessoa PA ON PD.codg_paciente = PA.codg_pessoa
INNER JOIN tb_pessoa DE ON PD.codg_dentista = DE.codg_pessoa
INNER JOIN tb_empresa EM ON PD.numr_unidade = EM.numr_empresa
INNER JOIN tb_convenio CO ON PD.codg_convenio = CO.codg_convenio
INNER JOIN tb_tipo_entrega EN ON PD.tipo_entrega = EN.codg_tipoentrega
INNER JOIN tb_endereco EP ON PD.codg_paciente = EP.codg_pessoa
INNER JOIN tb_endereco ED ON PD.codg_dentista = ED.codg_pessoa
WHERE PD.numr_pedido = 601022;

 

Se não houver uma solução na própria Query, irei tentar alguma solução na aplicação.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho pois é uma query de "count" só retorna uma linha , ainda que o valor seja 0.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade esse count não existiria, pois ela deveria me trazer os registros, seria algo assim.

 

(SELECT IP.codg_exame
FROM tb_item_pedido IP INNER JOIN tb_exame EX ON (IP.codg_exame = EX.codg_exame)
WHERE IP.numr_pedido = 601022) AS exames

 

onde eu teria mais de um cdg_exame por pedido.

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.