Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Na tabela representada na query (pf_representantes_pulv) nem todos representantes tem cadastrado todos grupos de produtos, mas independente disso preciso listar todos grupos pra ele e sua taxa (coluna pulv), no caso o grupo que ele não tiver vai aparecer a taxa 0, porém não consigo resolver, nesse formato ele acaba me listando no caso do representante 29 apenas 4 registros sendo que o total de grupos é 23.
SELECT DISTINCT P.grupo, P.produto, P.pulv FROM pf_representantes_pulv P
RIGHT OUTER JOIN (pf_representantes_pulv RP) ON (RP.grupo = P.grupo)
WHERE RP.id_representante = 29
ORDER BY P.grupo ASC
Tentei, mas daí ele repete os registros e usando um GROUP BY no site volta a exibir somente os 4...
Se não são listados dados da tabela pf_representantes_pulv e se quer trazer independente de existir ou não nesta tabela , qual a razão do outer join ?
Seria para trazer todos os grupos com seus respectivos produtos de um determinado representante tendo ou não esse grupo registrado para ele. Tentei seguir a linha de raciocínio mais ou menos igual a esse site: http://www.devmedia.com.br/inner-cross-left-rigth-e-full-joins/21016
Publique uma descricao das tabelas em questão e como quer os dados exibidos.
Confesso não ter entendido o problema
Beleza, segue abaixo a tabela e um modelo de dados.
CREATE TABLE `pf_representantes_pulv` (
`id_representante` int(11) NOT NULL,
`id_marca` int(11) NOT NULL,
`grupo` int(4) NOT NULL,
`pulv` int(11) NOT NULL,
`produto` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `pf_representantes_pulv` (`id_representante`, `id_marca`, `grupo`, `pulv`, `produto`) VALUES
(30, 1, 101, 10, 'Arroz Branco T1'),
(30, 2, 101, 100, 'Arroz Branco T1'),
(30, 1, 105, 15, 'Feijão Carioca'),
(30, 1, 201, 50, 'Feijão Preto'),
(29, 1, 101, 100, 'Arroz Branco T1'),
(29, 2, 101, 4, 'Arroz Branco T1'),
(29, 1, 201, 26, 'Arroz Parbolizado'),
(29, 1, 205, 7, 'Feijão Preto'),
(29, 1, 301, 4, 'Arroz Integral');
Abaixo segue o modelo de dados que tenho que exibir.
Na verdade o 29 tem 5 registros, mas tenho que exibir 6 pois tenho que mostrar todos grupos com marcas diferentes.
Representante 29
---------------------------------------------
grupo | produto | marca | pulv
101 | Arroz Branco T1 | 1 | 100
101 | Arroz Branco T1 | 2 | 4
105 | Feijão Carioca | 1 | 0
201 | Arroz Parbolizado | 1 | 26
205 | Feijão Preto | 1 | 7
301 | Arroz Integral | 1 | 4
Tentou sem o DISTINCT ?