Ir para conteúdo

POWERED BY:

Arquivado

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

Guga01

Select em mais de uma tabela

Recommended Posts

Olá pessoal!

 

No meu banco de dados tenho essas tabelas:

 

CREATE TABLE `categorias` (
`id_categorias` int(5) unsigned zerofill NOT NULL auto_increment,
`nome` varchar(100) collate latin1_general_ci default NULL,
`idPai` int(5) unsigned zerofill NULL default 0,
`ordem` tinyint(1) NOT NULL default 0,
`dataCadastro` datetime NOT NULL,
`dataAtualizacao` datetime NOT NULL,
PRIMARY KEY  (`id_categorias`),
FOREIGN KEY (`idPai`)
REFERENCES categorias(`id_categorias`)
ON DELETE RESTRICT
ON UPDATE CASCADE) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;



CREATE TABLE `produtos` (
`id_produtos` int(5) unsigned zerofill NOT NULL auto_increment,
`nome` varchar(100) collate latin1_general_ci default NULL,
`descricao` varchar(255) collate latin1_general_ci default NULL,
`valorNormal` float(9, 2) NOT NULL DEFAULT 0,
`valorOferta` float(9, 2) NOT NULL DEFAULT 0,
`valorAtivo` tinyint(1) NOT NULL default 0,
`estoque` tinyint(1) NOT NULL default 0,
`quantidade` int(5) unsigned zerofill NOT NULL default 0,
`destaque` tinyint(1) NOT NULL default 0,
`novidade` tinyint(1) NOT NULL default 0,
`idMarca` int(5) unsigned zerofill NOT NULL,
`foto` varchar(100) collate latin1_general_ci default NULL,
`dataCadastro` datetime NOT NULL,
`dataAtualizacao` datetime NOT NULL,
PRIMARY KEY  (`id_produtos`),
FOREIGN KEY (`idMarca`)
REFERENCES marcas(`id_marcas`)
ON DELETE RESTRICT
ON UPDATE CASCADE) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;


CREATE TABLE `produtos_categorias` (
`id_produtos_categorias` int(5) unsigned zerofill NOT NULL auto_increment,
`idCategoria` int(5) unsigned zerofill NOT NULL,
`idProduto` int(5) unsigned zerofill NOT NULL,
PRIMARY KEY  (`id_produtos_categorias`),
FOREIGN KEY (`idCategoria`)
REFERENCES categorias(`id_categorias`)
ON DELETE RESTRICT
ON UPDATE CASCADE,
FOREIGN KEY (`idProduto`)
REFERENCES produtos(`id_produtos`)
ON DELETE RESTRICT
ON UPDATE CASCADE) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

 

Minha dúvida é a seguinte: como faço para selecionar todos os produtos de uma determinada categoria ordenados pelo nome?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi tudo direitinho, você não precisava ter usado FOREIGN KEYs, nem innoDB...

 

Eu utilizaria Joins na query mesmo...sem relacionar as tabelas direto no engine (fica mais rápido, dependendo do projeto)

 

 

Fazia algo como:

select * from produtos
inner join produtos_categorias on  
produtos_categorias.idProduto = produtos.id_produtos
inner join categorias on
produtos_categorias.idCategoria = categorias.id_categorias
where categorias.nome = 'a categoria que voce quiser'

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.