ESerra 744 Denunciar post Postado Setembro 24, 2010 Preciso entender porque o seguinte não funciona: SELECT descricao FROM servicos WHERE id IN (SELECT servicos FROM geral WHERE id = '1') Nesse caso, ele sempre retorna apenas uma linha como resultado, quando deveria retornar duas, a subquery: SELECT servicos FROM geral WHERE id = '1' Retorna exatamente: 1,3 Então, a minha idéia é que buscasse a coluna descricao da tabela serviços em que o id fosse igual a 1 e 3, mas não retorna, só retorna o primeiro, ou seja, o id igual a 1, se eu altero no BD e inverto (3,1) ele busca o do id igual a 3 e ignora o igual a 1, se eu jogo direto: SELECT descricao FROM servicos WHERE id IN (1,3) Retorna o resultado da forma correta, buscando os dois ids (1 e 3), não estou entendendo o porque disso, inclusive se eu faço duas querys, ou seja, primeiro: SELECT servicos FROM geral WHERE id = '1' Ai resgato os dado e uso esses mesmos dados na segunda: SELECT descricao FROM servicos WHERE id IN ($dados_resgatados_da_primeira) Também funciona perfeitamente... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 25, 2010 SELECT servicos FROM geral WHERE id = '1' Retorna duas linhas servico ------- 1 3 ou uma string única servico ------- 1,3 ? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 25, 2010 Uma string única: 1,3. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 26, 2010 Talvez com a instr. SELECT descricao FROM servicos WHERE instr((SELECT servicos FROM geral WHERE id = '1'),id) > 0 Obs : Puro chute. :) Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 26, 2010 Talvez com a instr. SELECT descricao FROM servicos WHERE instr((SELECT servicos FROM geral WHERE id = '1'),id) > 0 Obs : Puro chute. :) Bingo! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Funcionou certinho, não conhecia essa função, vou dar uma lida na documentação para assimilar ela bem, com certeza será útil. Obrigado pela ajuda! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 26, 2010 O perigo é um retorno tipo <2,3,11> e buscar um código <1> , vai ser um falso positivo. Isto só funciona com códigos de tamanho especifico. No Oracle vi e utilizei uma solução que tranforma a string numa tabela por meio de um CAST, talvez dê para fazer isto no MySql. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 26, 2010 Realmente, acabei de simular aqui e retornou um valor indevido... vou ter que buscar outra solução... Compartilhar este post Link para o post Compartilhar em outros sites