Guga01 0 Denunciar post Postado Fevereiro 8, 2011 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
Yuri Sa 0 Denunciar post Postado Fevereiro 22, 2011 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