Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala povo!
Estou com a seguinte dúvida:
Tenho as seguintes tabelas:
Não estou conseguindo fazer com que retorne um produto com 2 categorias... na verdade, estou com dificuldade em criar uma lógica para isso (onde usar AND ou OR, sei lá).
Esta consulta retornam os produtos, mas não filtrados por nenhuma categoria. Quando a pessoa seleciona uma categoria, ainda dá certo, o problema é quando escolho duas ou mais:
SELECT pro.*, cat.catNome
FROM sistema_produto pro, sistema_categoria cat, sistema_produto_categoria pca
WHERE pro.proAtivo = 'S'
AND pro.proExcluido = 'N'
AND pro.proId = pca.proId
AND cat.catId = pca.catId
GROUP BY pro.proId
Para um teste, tentem selecionar um produto que tenha como categorias o Kevlar e Frigorífico.
Segue um DUMP simples...
---- Table structure for table sistema_categoria
--
CREATE TABLE IF NOT EXISTS `sistema_categoria` (
`catId` int(10) NOT NULL AUTO_INCREMENT,
`catTipo` enum('SEG','MAT','APL') NOT NULL,
`catNome` varchar(255) NOT NULL,
`catAtivo` enum('S','N') NOT NULL,
`catExcluido` enum('S','N') NOT NULL,
PRIMARY KEY (`catId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Dumping data for table sistema_categoria
--
INSERT INTO sistema_categoria (catId, catTipo, catNome, catAtivo, catExcluido) VALUES
(1, 'SEG', 'Frigorífico', 'S', 'N'),
(2, 'MAT', 'Kevlar', 'S', 'N'),
(3, 'APL', 'Corte', 'S', 'N');
-- --------------------------------------------------------
--
-- Table structure for table sistema_produto
--
CREATE TABLE IF NOT EXISTS `sistema_produto` (
`proId` int(10) NOT NULL AUTO_INCREMENT,
`proCodigo` varchar(255) NOT NULL,
`proNome` varchar(255) NOT NULL,
`proDescricao` text NOT NULL,
`proDestaque` enum('S','N') NOT NULL,
`proAtivo` enum('S','N') NOT NULL,
`proExcluido` enum('S','N') NOT NULL,
PRIMARY KEY (`proId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Dumping data for table sistema_produto
--
INSERT INTO `sistema_produto` (`proId`, `proCodigo`, `proNome`, `proDescricao`, `proDestaque`, `proAtivo`, `proExcluido`) VALUES
(1, '041', 'Produto 1', '<p>sdas21321321</p>', 'S', 'S', 'N'),
(2, '001', 'Produto 2', '<p>Teste de produto 2</p>\r\n<p> </p>\r\n<p><img src="[http://25.media.tumblr.com/tumblr_m5i46t7tOs1qdlh1io1_250.gif"](http://25.media.tumblr.com/tumblr_m5i46t7tOs1qdlh1io1_250.gif) alt="" width="208" height="213" /></p>', 'S', 'S', 'N'),
(3, 'Teste01', 'Produto 3', '<p>Teste03</p>', 'S', 'S', 'N');
-- --------------------------------------------------------
--
-- Table structure for table sistema_produto_categoria
--
CREATE TABLE IF NOT EXISTS `sistema_produto_categoria` (
`proId` int(10) NOT NULL,
`catId` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table sistema_produto_categoria
--
INSERT INTO sistema_produto_categoria (proId, catId) VALUES
(1, 2),
(2, 2),
(3, 1),
(1, 1);
Existe algum jeito simples de resolver essa questão?
Carregando comentários...