Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Braga (c)

[Resolvido] Contar registro mysql, limitar resultado

Recommended Posts

Olá pessoal!

 

Tenho 2 tabelas no mySql, onde em uma eu cadastro um titulo para a galeria de imagens e outra as fotos.

 

Gostaria de exibir em uma pagina apenas a primera foto cadastrada em cada galeria.

 

tenho esta estrutura

 

tb_galeria
id   id_cadastro   titulo         ativo
1    0001          Sabado de Sol    1          
2    0002          Parque Legal     1

tb_fotos
id   idgaleria     imagem   
1    0001          foto009.jpg
2    0001          foto008.jpg
3    0001          foto007.jpg
4    0002          foto006.jpg
5    0002          foto005.jpg

Como as fotos sao inseridas com um ID referente a cada galeria, eu pensei no seguinte:

 

$sql = "SELECT id, idgaleria, imagem, id_cadastro, titulo, ativo count(id_galeria) FROM tb_fotos, tb_galeria GROUP BY id_cadastro HAVING count( idgaleria ) > 1 ORDER BY RAND()";

Mesmo assim nao estou conseguindo retornar os valores,

 

Alguem tem ideia de como posso resgatar e separar esse valores?

 

 

Mto Obrigado!

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tu tem que utilizar o LIMIT em SQL

Digamos...

$sql = "SELECT id, idgaleria, imagem, id_cadastro, titulo, ativo count(id_galeria) FROM tb_fotos, tb_galeria   GROUP BY id_cadastro HAVING count( idgaleria ) > 1 ORDER BY RAND() [b]LIMIT 1[/b]"

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Felipe,

 

Obrigado pela ajuda!

 

Eu tentei desta forma tambem, porem ele da erro de syntax dizendo que a versao nao é compativel.

Detalhe, eu tenho a versao 5.1.37.

 

 

continuo tentando, se alguem tiver alguma ideia de como realizar esse select

 

 

Valew!

 

Estou editando para nao acumular,

 

mas fiz uma alteracao e rolou, so que agora ele da resultado duplicado

 

SELECT DISTINCT id_cast, imgthumb, id_cadastro, ativo
FROM tb_galeria, tb_cast
WHERE ativo = '1'
GROUP BY id_cadastro
HAVING count( id_cadastro) >1

Tipo ele pega o mesmo item = id da galeria e repete pra foto,

ou seja vem a mesma foto da galeria A, na galeria B

 

Fiz outras tentativas aqui, agora usei o DISTINCT

 

 

SELECT DISTINCT 
id, idgaleria, imagem, id_cadastro, titulo, ativo 
FROM tb_fotos, tb_galeria 
GROUP BY id_cadastro 
HAVING count( idgaleria ) > 1

Continua dando Syntax invalida :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o resultado esta duplicado tente assim:

SELECT DISTINCT id_cast, imgthumb, id_cadastro, ativo
FROM tb_galeria, tb_cast 
WHERE ativo = '1' AND tb_galeria.id_cadastro = tb_cast.idgaleria
GROUP BY id_cadastro
HAVING count( id_cadastro) >1
se você está usando FK você tem que igualar os respectivos id's para o resultado não vir duplicado

eu chutei o idgaleria, pois essa tabela você não especificou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

faz um teste da seguinte forma:

 

SELECT f.*, g.* FROM tb_fotos As f INNER JOIN tb_galeria AS g ON f.id_galeria=g.id_cadastro ORDER f.id ASC LINIT 1;

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Galuschka,

 

Fiz da forma que você sugeriu, mas acabei mudando o parametro ( >=1 ) pois ele estava trazendo o valor duplicado (nao sei por que)

 

Muito obrigado pela ajuda amigos!!!

 

Fabio, eu testei seu script mas o mysql deu erro de syntax, acabei conseguindo com o codido go Galuschka.

mesmo assim obrigado por postar sua ajuda!! :)

 

--------

 

Pra quem precisar relacionar uma busca de galeria de imagens, segue um exemplo, com ajuda dos amigos do Forum :)

 

Onde id_cast (tabela = tb_galeria) é relacionado ao id_cadastro (tabela = tb_cast)

 

e onde: imgthumb, faz parte da tabela tb_galeria (galeria de fotos) e ativo faz parte da tabela tb_cast (titulo galeria ativa ou nao)

Utilizei o Rand() para deixar randomico, e Limit para passar apenas 5 resultados.

 

SELECT DISTINCT id_cast, imgthumb, id_cadastro, ativo
FROM tb_galeria, tb_cast
WHERE ativo = '1'
AND tb_galeria.id_cast = tb_cast.id_cadastro
GROUP BY id_cadastro
HAVING count( id_cadastro ) >=1
ORDER BY RAND( )
LIMIT 5

Espero que ajude outros :)

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.