BinSilva 0 Denunciar post Postado Janeiro 3, 2015 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_tipoentregaFROM tb_pedido PDINNER JOIN tb_pessoa PA ON PD.codg_paciente = PA.codg_pessoaINNER JOIN tb_pessoa DE ON PD.codg_dentista = DE.codg_pessoaINNER JOIN tb_empresa EM ON PD.numr_unidade = EM.numr_empresaINNER JOIN tb_convenio CO ON PD.codg_convenio = CO.codg_convenioINNER JOIN tb_tipo_entrega EN ON PD.tipo_entrega = EN.codg_tipoentregaINNER JOIN tb_endereco EP ON PD.codg_paciente = EP.codg_pessoaINNER JOIN tb_endereco ED ON PD.codg_dentista = ED.codg_pessoaWHERE 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
Motta 645 Denunciar post Postado Janeiro 4, 2015 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
BinSilva 0 Denunciar post Postado Janeiro 4, 2015 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
Motta 645 Denunciar post Postado Janeiro 4, 2015 Aí o erro se explica , você quer a quantidade de exames ou uma lista de códigos ? No 2º caso tente o GROUP_CONCAT http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_group-concat Compartilhar este post Link para o post Compartilhar em outros sites
BinSilva 0 Denunciar post Postado Janeiro 4, 2015 Exatamente isso Motta, muitíssimo obrigado, funcionou como eu queria, rápido e perfeito. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites