Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ebdt

fazer seleção em mais duas tabelas

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.