E ae galerinha, prontos para o desafio? Vamos la, primeiro vamos conhecer o banco de dados, segue abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | -- -- Estrutura da tabela `categorias` -- CREATE TABLE IF NOT EXISTS `categorias` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; -- -- Extraindo dados da tabela `categorias` -- INSERT INTO `categorias` (`id`, `nome`) VALUES (1, 'legal'), (2, 'alegre'), (3, 'inteligente'), (4, 'divertido'), (5, 'sorridente'), (6, 'engraçado'); -- -------------------------------------------------------- -- -- Estrutura da tabela `relacao` -- CREATE TABLE IF NOT EXISTS `relacao` ( `usuario` int(11) NOT NULL, `categoria` int(11) NOT NULL, UNIQUE KEY `usuario` (`usuario`,`categoria`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Extraindo dados da tabela `relacao` -- INSERT INTO `relacao` (`usuario`, `categoria`) VALUES (1, 1), (1, 5), (1, 6), (2, 2), (2, 4), (2, 5), (3, 5), (3, 6), (4, 1), (4, 4), (4, 6); -- -------------------------------------------------------- -- -- Estrutura da tabela `usuarios` -- CREATE TABLE IF NOT EXISTS `usuarios` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; -- -- Extraindo dados da tabela `usuarios` -- INSERT INTO `usuarios` (`id`, `nome`) VALUES (1, 'magno'), (2, 'diogo'), (3, 'daniel'), (4, 'tayna'); |
Devidamente apresentado o banco de dados, vamos as explicações. Como da pra perceber, são 3 tabelas contendo respectivamente uma lista de categorias, uma lista de relacionamentos e uma lista de usuários. Mas porque três tabelas e não duas? Porque sim! ;P~ Porque cada usuário pode ter N categorias relacionadas.
Ai esta o desafio, fazer um select que mostre a lista de usuários (sem repetir o usuário) e suas categorias relacionadas em apenas uma linha (um select). Como por exemplo:
1 2 3 4 5 | NOME | CATEGORIAS ---------------------------- magno | legal, sorridente, engraçado diogo | alegre, divertido, sorridente etc... |
Prêmio: Uma caneca exclusiva da Brainatwork TI (enviamos para qualquer lugar do mundo)

O desafio esta lançado… e não esqueça de preencher os comentários com seu e-mail correto.
have fun!