Ir para conteúdo

POWERED BY:

Arquivado

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

flaviorocha

Distinct no My Sql

Recommended Posts

Olá Pessoal,

 

Vamos lá...

 

Estou com um problema que não consigo solucionar de forma alguma, estou tentando usar count, distinct e where em um mesmo select porém da erro,

 

O que eu preciso, tenho uma tabela de produtos, e a mesma é cadastrada por várias empresas e quero fazer um select que na tela inicial me mostre os últimos produtos cadastrados, porém esses últimos só me traga na tela apenas 1 produto por cliente...

 

Dessa forma fiz o seguinte select

 

 

listaprosql="select count(distinct pro.pro_cli_codigo), pro.pro_codigo, pro.pro_nome, pro.pro_preco, pro.pro_dep_codigo, pro.pro_data, pro.pro_descricao, pro.pro_foto, dep.dep_codigo, dep.dep_nome, cli.cli_nomefantasia, cli.cli_codigo, cli.cli_cid_codigo, cli.cli_status From tab_produtos pro left join tab_departamento dep on pro.pro_dep_codigo=dep.dep_codigo left join tab_clientes cli on pro.pro_cli_codigo=cli.cli_codigo where cli.cli_cid_codigo=1 and cli.cli_status=1 and pro.pro_foto=1 order by pro.pro_codigo desc"

Set listaprors=objconexao.execute(listaprosql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fica dificil te ajudar sem conhecer a estrutura das tabelas....

 

Fala Giesta, agradeço pelo retorno...

 

Nesse Select possui junto 3 tabelas. Mas o que eu realmente não consigo entender é se consigo juntar os 3 comandos count, distinct e where... me dá erro.

 

Vou montar um select com menus dados só para você visualizar melhor o que eu preciso.

 

Na lógica, o que eu preciso é mostrar os últimos produtos, porém que me traga apenas 1 no máximo por empresa que cadastrou, e pra isso iria usar o distinct. Pois se não na minha tela fica produtos só de uma empresa. e quero limitar apenas 1 na tela inicial... Como fazer isso?

 

 

listaprosql="select count(distinct pro.pro_cli_codigo), pro.pro_codigo, pro.pro_nome, pro.pro_foto, cli.cli_codigo, cli.cli_cid_codigo, cli.cli_status from tab_produtos pro left join tab_clientes cli on pro.pro_cli_codigo=cli.cli_codigo where cli.cli_cid_codigo=1 and cli.cli_status=1 and pro.pro_foto=1 order by pro.pro_codigo desc"

Set listaprors=objconexao.execute(listaprosql)

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq o count?

 

acho que pode tirar o count, não precisa de distinct...

 

será que só um limit 1 não resolve?

 

select ....

from ...

where ..

order by..

limit 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq o count?

 

acho que pode tirar o count, não precisa de distinct...

 

será que só um limit 1 não resolve?

 

select ....

from ...

where ..

order by..

limit 1

 

Fala EutoComProblema....

 

Então um limit resolveria se quisesse mostrar apenas um número exato de produtos, mas eu preciso mostrar apenas 1 produto, porém o mesmo precisa ser de empresas diferentes...

 

Tenho uma tabela de inúmeros produtos, esses produtos são das mais variadas empresas, e quero mostrar na tela inicial, os últimos produtos porém limitar que seja apenas 1 de cada empresa...

 

Como proceder?

 

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi muito bem, mas vê se isso ajuda:

 

 

SELECT pro.*, cli.* FROM (SELECT p.pro_cli_codigo, p.pro_codigo, p.pro_nome, p.pro_preco, p.pro_dep_codigo, p.pro_data, p.pro_descricao, p.pro_foto, p.dep_codigo FROM tab_produtos p GROUP BY p.pro_cli_codigo) pro LEFT JOIN tab_clientes cli On cli.cli_codigo = pro.pro_cli_codigo

 

Abraços,

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.