ebdt 0 Denunciar post Postado Março 29, 2012 e ai pessoal. tenho uma tabela chamada video_aula e nela cadastro a categoria e subcategoria por meio de id's que são relacionamentos das tabelas categoria e subcategoria. minha dúvida é: como selecionar as video aulas trazendo a respectiva categoria e subcategoria? eu preciso recuperar os seguinte dados: categoria_slug <- da tabela categoria subcategoria_slug <- da tabela subcategoria titulo_slug <- da tabela video_aula imagem <- da tabela video_aula texto <- da tabela video_aula tentei usando o LEFT JOIN na tabela categoria, mas ai como ia dar mais um LEFT JOIN na tabela subcategoria? as estruturas das tabelas são: -- ---------------------------- -- Table structure for `categoria` -- ---------------------------- DROP TABLE IF EXISTS `categoria`; CREATE TABLE `categoria` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `categoria` varchar(20) NOT NULL, `categoria_slug` varchar(20) NOT NULL, `titulo` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for `subcategoria` -- ---------------------------- DROP TABLE IF EXISTS `subcategoria`; CREATE TABLE `subcategoria` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_categoria` int(2) unsigned NOT NULL, `subcategoria` varchar(25) NOT NULL, `subcategoria_slug` varchar(25) NOT NULL, `titulo` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for `jre_video_aula` -- ---------------------------- DROP TABLE IF EXISTS `video_aula`; CREATE TABLE `video_aula` ( `id` int(5) unsigned NOT NULL AUTO_INCREMENT, `id_autor` int(2) unsigned NOT NULL, `data_hora` datetime NOT NULL, `titulo` varchar(45) NOT NULL, `titulo_slug` varchar(45) NOT NULL, `id_categoria` int(2) unsigned NOT NULL, `id_subcategoria` int(2) unsigned NOT NULL, `imagem` varchar(50) NOT NULL, `video` varchar(20) NOT NULL, `texto` text NOT NULL, `tags` varchar(20) NOT NULL, `tags_slug` varchar(20) NOT NULL, `outros` varchar(2) DEFAULT NULL, `visitas` int(5) unsigned NOT NULL DEFAULT '0', `status` enum('1','0') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; ai galera, quebrei a cabeça e consegui desta maneira, mas não sei se é a melhor, se alguem tiver uma SQL melhor manda ai por favor; SELECT * FROM video_aula INNER JOIN categoria ON video_aula.id_categoria = categoria.id INNER JOIN subcategoria WHERE video_aula.id_subcategoria = subcategoria.id; Compartilhar este post Link para o post Compartilhar em outros sites
Cristian Göhl 0 Denunciar post Postado Abril 2, 2012 e ai pessoal. tenho uma tabela chamada video_aula e nela cadastro a categoria e subcategoria por meio de id's que são relacionamentos das tabelas categoria e subcategoria. minha dúvida é: como selecionar as video aulas trazendo a respectiva categoria e subcategoria? eu preciso recuperar os seguinte dados: categoria_slug <- da tabela categoria subcategoria_slug <- da tabela subcategoria titulo_slug <- da tabela video_aula imagem <- da tabela video_aula texto <- da tabela video_aula tentei usando o LEFT JOIN na tabela categoria, mas ai como ia dar mais um LEFT JOIN na tabela subcategoria? as estruturas das tabelas são: -- ---------------------------- -- Table structure for `categoria` -- ---------------------------- DROP TABLE IF EXISTS `categoria`; CREATE TABLE `categoria` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `categoria` varchar(20) NOT NULL, `categoria_slug` varchar(20) NOT NULL, `titulo` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for `subcategoria` -- ---------------------------- DROP TABLE IF EXISTS `subcategoria`; CREATE TABLE `subcategoria` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_categoria` int(2) unsigned NOT NULL, `subcategoria` varchar(25) NOT NULL, `subcategoria_slug` varchar(25) NOT NULL, `titulo` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; -- ---------------------------- -- Table structure for `jre_video_aula` -- ---------------------------- DROP TABLE IF EXISTS `video_aula`; CREATE TABLE `video_aula` ( `id` int(5) unsigned NOT NULL AUTO_INCREMENT, `id_autor` int(2) unsigned NOT NULL, `data_hora` datetime NOT NULL, `titulo` varchar(45) NOT NULL, `titulo_slug` varchar(45) NOT NULL, `id_categoria` int(2) unsigned NOT NULL, `id_subcategoria` int(2) unsigned NOT NULL, `imagem` varchar(50) NOT NULL, `video` varchar(20) NOT NULL, `texto` text NOT NULL, `tags` varchar(20) NOT NULL, `tags_slug` varchar(20) NOT NULL, `outros` varchar(2) DEFAULT NULL, `visitas` int(5) unsigned NOT NULL DEFAULT '0', `status` enum('1','0') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; ai galera, quebrei a cabeça e consegui desta maneira, mas não sei se é a melhor, se alguem tiver uma SQL melhor manda ai por favor; SELECT * FROM video_aula INNER JOIN categoria ON video_aula.id_categoria = categoria.id INNER JOIN subcategoria WHERE video_aula.id_subcategoria = subcategoria.id; Acho que faria assim: SELECT A.titulo_slug, A.imagem, A.texto, B.subcategoria_slug, C.categoria_slug FROM jre_video_aula A INNER JOIN subcategoria B ON (A.id_subcategoria = B.id) INNER JOIN categoria C ON (B.id_categoria = C.id) Se o usuário alterar o cadastro da sub, mudando ela de categoria, como fica? Tem trigger para fazer update na video aula? Compartilhar este post Link para o post Compartilhar em outros sites
ebdt 0 Denunciar post Postado Abril 6, 2012 o que seria Trigger? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 6, 2012 http://www.devmedia.com.br/mysql-triggers/8088 http://dev.mysql.com/doc/refman/5.0/en/triggers.html Compartilhar este post Link para o post Compartilhar em outros sites