CA Braga 0 Denunciar post Postado Julho 27, 2009 Desafio aos experts: Temos 2 tabelas em questão, a tabela X e X2, como exemplo abaixo: Tabela X: Contém os campos ID e Nome Id: 1 | Nome: Nome1 Id: 2 | Nome: Nome2 Id: 3 | Nome: Nome3 Id: 4 | Nome: Nome4 Tabela X2: contém IDs da tabela X no mesmo campo, separados por vírgula: Ids: 1,3 Ids: 4,3 Ids: 2,3 Ids: 4,2 Até aí tudo bem, mas o desafio é como mostrar os nomes relacionados aos IDs da tabela X separados por vírgula, pois na função INNER JOIN ou AND só conseguimos mostrar o primeiro valor, no caso antes da vírgula, como no exemplo abaixo Ids: Nome1 Ids: Nome4 Ids: Nome2 Ids: Nome4 Nenhum desenvolvedor daqui conseguiu resolver, alguém poderia solucionar? Desde já agradeço a atenção Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 27, 2009 1) Tente a function INSTR , se ela retornar maior que zero indica que a substring existe na outra. select instr('1,3','1') from .... Retorna 1 2) Veja as Regras pois o título de seu tópico vai contra a 9ª http://forum.imasters.com.br/index.php?app=core&module=help 3) Melhore este modelo separando as colunas dos id´s. Compartilhar este post Link para o post Compartilhar em outros sites
CA Braga 0 Denunciar post Postado Julho 30, 2009 Então, consegui não, nem os desenvolvedores daqui do escritório. Acho que compliquei demais a minha pergunta, vamos ver se consigo simplificar a coisa: TABELA X: id | nome TABELA X2: ids (grava os id's da tabela X. caso haja mais de uma opção selecionada na página, ele separa por vírgula) Até aí está perfeito, ele mostra os valores separados por vírgula, como no exemplo abaixo: TABELA X2: id, id, id, (ex.: 3,5,6) Mas quero que ele mostre assim: TABELA X2: nome, nome, nome (ex.: nome3,nome5,nome6) Essa relação que não consigo fazer, pois INNER JOIN e AND só mostra o primeiro nome, não mostra os valores depois da vírgula. Esse troço está de arrancar os cabelos do povo daqui, rss... Obrigado pela atenção Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Julho 31, 2009 select b_id , group_concat(a_nome) nomes from ( select a.id a_id , a.nome a_nome ,b.id b_id, b.ids b_ids from a,b where find_in_set(a.id , b.ids) ) z group by b_id Modelagem e normalizaçao Nota ZERO hein camarada.... Compartilhar este post Link para o post Compartilhar em outros sites
CA Braga 0 Denunciar post Postado Agosto 1, 2009 Peço desculpas pela postagem mal feita, mas é que não sou profissional da área mas preciso muito solucionar esse problema. Desde já agradeço a compreensão. Não consegui solucionar, ficou assim: dina_pdv_produtos_id, group_concat(dina_pdv_tamanho.tamanho) noms from ( Select dina_pdv_tamanho.id dina_pdv_tamanho_id, dina_pdv_tamanho.tamanho dina_pdv_tamanho_tamanho, dina_pdv_produtos.id dina_pdv_produtos_id, dina_pdv_produtos.tamanho dina_pdv_produtos_tamanho from dina_pdv_produtos, dina_pdv_tamanho where fin_in_set(dina_pdv_tamanho.id , dina_pdv_produtos.tamanho) ) z group by dina_pdv_produtos_id partindo da estrutura entre duas tabelas, a X se chama dina_pdv_tamanho e a X2 se chama dina_pdv_produtos, sendo os campos: dina_pdv.tamanho.id = id do tamanho dina_pdv.tamanho.tamanho = nome do tamanho dina_pdv_produtos.id = id do produto dina_pdv_produtos.tamanhos = ids dos tamanhos separados por vírgula. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 2, 2009 eu acho q você simplesmente escreveu a consulta errado (erro de digitacao). select b_id produto, group_concat(a_tamanho) tamanhos from ( Select b.id b_id , a.tamanho a_tamanho from dina_pdv_produtos b , dina_pdv_tamanho a where find_in_set(a.id , b.tamanhos) ) z group by b_id Compartilhar este post Link para o post Compartilhar em outros sites
CA Braga 0 Denunciar post Postado Agosto 2, 2009 GÊNIO, GÊNIO, GÊNIO!!! EXCELENTE!!! MUUITO OBRIGADO!!! Só estou com uma dúvida cruel, não consegui fazer com que o ID da tabela produtos seja pego pela variável URL (GET). Tentei utilizar: AND dina_pdv_produtos.id = colname (variável URL), mas deu tudo errado, teria como me dar + uma mão??? MEU CARO, MUUUITO OBRIGADO!!! Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 2, 2009 select b_id produto, group_concat(a_tamanho) tamanhos from ( Select b.id b_id , a.tamanho a_tamanho from dina_pdv_produtos b , dina_pdv_tamanho a where find_in_set(a.id , b.tamanhos) ) z where b_id = '$_GET[var_url]' group by b_id algo assim provavelmente q você quer Compartilhar este post Link para o post Compartilhar em outros sites
CA Braga 0 Denunciar post Postado Agosto 2, 2009 GOD BLESS YOU, MAN!!! Caiu como uma luva, problema 100% resolvido. MUITO OBRIGADO pela atenção e por ter me aturado. E parabéns ao IMASTERS por proporcionar esta ferramenta! Compartilhar este post Link para o post Compartilhar em outros sites