Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Tenho duas tabelas em meu banco de dados MySQL 5, sendo:
A tabela usuarios, guarda todos os usuarios cadastrados.
A tabela usuarios_telefones, guarda os numeros de telefone de cada usuários, sendo que cada usuário, pode ter um ou mais telefones.
Quero fazer uma instrução que me retorne o usuario e seus telefones.
Fiz uma instrução SQL assim:
SELECT u.id, u.nome, t.telefone FROM usuarios AS s INNER JOIN usuarios_telefones AS t ON s.id = t.id_usuarioBeleza, está tudo quase certo.Se o usuário tiver um telefone, beleza. A instrução vai me retornar apenas um registro (row).
Ex.: 25, guto, 5134761122
Agora, se o usuário tiver mais de um telefone, ele vai me devolver X registros, de acordo com o numero de telefones que o usuario tiver.
Por ex, eu tenho telefone de casa, celular e da empresa, meus. Executando esta instrucao SQL, vai me retornar assim, 3 registros (rows):
25, guto, 5134761122
25, guto, 5134763344
25, guto, 5134765566
E o que eu gostaria, é que me retornasse, algo assim:
25, guto, 5134761122, 5134763344, 5134765566
sendo id do usuario, nome do usuario, telefone1, telefone2 e telefone3.
Talvez com STORED PROCEDURE ou uma VIEW eu consiga ter isso...
Alguém tem idéia?
Cara, já tinha visto sua resposta mas não tinha testado ela pq não tinha precisado dela.Mas voltei aqui agora, testei e funcionou redondinho. Você é fera!Valeu mesmo.Boa sexta e um bom findi.Abraços!
Conhece um comando parecido para M$ SQL SERVER?versão 2000 de preferência, mas se tiver pro 2005, beleza.
putz cara...SQL Server só usei uma vez em toda minha vida... ehehehenem sei. :(
E ae,
você pode utilizar o Group_Concat para agrupar estes registros sem ser que sejam retornados em várias linhas, o único prob. é que estes registros ficarão em apenas uma coluna, separados por um caracter que você definir, ex:
>
Query:
>
SELECT USU.ID_USU,USU.NOME_USU,
/Agrupar todos os telefones (ordenados) do usuário/
GROUP_CONCAT(TEL.TELEFONE ORDER BY TEL.TELEFONE SEPARATOR ';') AS TELEFONES
FROM usuario USU
INNER JOIN usuariotel TEL ON TEL.ID_USU = USU.ID_USU
/Agrupado por usuário/
GROUP BY USU.ID_USU
ORDER BY USU.NOME_USU
Quiser saber mais sobre o group_concat veja neste link.