KUROL3 3 Denunciar post Postado Outubro 26, 2009 Olá tenho uma duvida fiz um formulario de cadastro como nome "gravar" que é cadastrado os ids da tabela de "gravar_instrumentos" permtindo o usuario cadastrar mais de um instrumento por vez. //tabela gravar id, nome, id_instrumento, cidade, estado //tabela gravar_instrumentos id, nome //registro na tabela de gravar INSERT INTO gravar (id, nome, id_instrumento, cidade, estado) values (1, 'Marco', '1,5,8,6', 'Sorocaba', 'SP') //issu funciona corretamente.. so que na hora de trazer os dados estou dando dois select pq.. o id_instrumento pode ser mais de um... //havia tentado isso $meu_comando = "SELECT gravar_instrumentos.nome as nome_instrumento, gravar.* FROM gravar LEFT JOIN gravar_instrumentos ON (gravar_instrumentos.id IN(gravar.id_instrumento)) //ai reparei que so pegava um registro tentei INNER e mesmo assim não deu.. então fiz 2 select... //teria possibilidade de sair o resultado em um único select..? //tipo concat(gravar_instrumentos.nome) as todos_instrumentos /* to viajando aqui em rsrsr */ abraço Marco Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Outubro 26, 2009 Você pode trazer todos concatenados no MySQL sim. Segue um exemplo: SELECT gravar.*, GROUP_CONCAT(gravar_instrumentos.nome) AS todos_instrumentos FROM gravar INNER JOIN gravar_instrumentos ON gravar_instrumentos.id = gravar.id_instrumento GROUP BY gravar.id_instrumento Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Outubro 26, 2009 Caraka... maravilha... parabéns.. Tks Abraço.. Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Outubro 26, 2009 Eclesiastes fui testar o código e não funcionow.... vamos pensar pq... //tabela gavar (dados) INSERT INTO gravar (id, nome, id_instrumento, cidade, estado) values (1, 'Marco', '1,5,2,6', 'Sorocaba', 'SP') INSERT INTO gravar (id, nome, id_instrumento, cidade, estado) values (2, 'Ricardo', '3,5', 'Ribeirao', 'SP') INSERT INTO gravar (id, nome, id_instrumento, cidade, estado) values (2, 'Mateus', '1', 'Sao Paulo', 'SP') //tabela gravar_instrumentos INSERT INTO gravar_instrumentos (id, nome) values (1, 'Viola') INSERT INTO gravar_instrumentos (id, nome) values (2, 'Violao') INSERT INTO gravar_instrumentos (id, nome) values (3, 'Teclado') INSERT INTO gravar_instrumentos (id, nome) values (4, 'Guitarra') INSERT INTO gravar_instrumentos (id, nome) values (5, 'Sax') INSERT INTO gravar_instrumentos (id, nome) values (6, 'Acordeon') //tentei usar no lugar de gravar_instrumentos.id = gravar.id_instrumento => gravar_instrumentos.id IN gravar.id_instrumento SELECT gravar.*, GROUP_CONCAT(gravar_instrumentos.nome) AS todos_instrumentos FROM gravar INNER JOIN gravar_instrumentos ON gravar_instrumentos.id = gravar.id_instrumento GROUP BY gravar.id_instrumento Aguardo Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Outubro 26, 2009 Ahh okay, não havia reparado que você grava os ids separados por vírgula. Neste caso, não se pode usar o IN (..) dessa forma, pois todo o valor do campo é tratado como um único valor. :P Você tem que usar FIND_IN_SET(). Exemplo: SELECT gravar.*, GROUP_CONCAT(gravar_instrumentos.nome) AS todos_instrumentos FROM gravar INNER JOIN gravar_instrumentos ON FIND_IN_SET(gravar_instrumentos.id, gravar.id_instrumento) GROUP BY gravar.id Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Outubro 26, 2009 Maravilha agora... foi corretamente... Obrigado, tu manja mesmo... "Quanto mais aprendo mais descubro que menos sei"... Abraço KUROLE Compartilhar este post Link para o post Compartilhar em outros sites