Ir para conteúdo

POWERED BY:

Arquivado

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

Betity Alga

Como remover valores duplicados de uma consulta sql?

Recommended Posts

Tenho uma coluna chamada ( genero ) onde gravei os Gêneros de alguns filmes, porem cada filme tem em media de 3 a 4

gênero diferente.

Assim postei os gênero na coluna (genero) separando-os por (,) virgulas, agora preciso imprimir cada gênero em lista

sem que eles se repitam, para poder classificar as consultas de filmes por gênero.

 

Fiz os seguintes as seguintes consultas:

 

Desta forma meu script separa certinho os Gêneros porem fica em acesso e com valores repetidos

$sqlGenero = mysql_query(" SELECT genero FROM filmes GROUP BY genero");
while($resGenero = mysql_fetch_assoc($sqlGenero)){

$separa = explode(',', $resGenero['genero']); 

$separaUniq = array_unique($separa);
$separaCont = count($separaUniq);

for($i = 0; $i < $separaCont; $i++){
echo $separa[$i].'<br>';
}
}

 

Desta forma meu script separa certinho os Gêneros porem so imprimir 4 resuldaos

$sqlGenero = mysql_query(" SELECT genero FROM filmes GROUP BY genero");
$i =0;
$separa = array();
while($resGenero = mysql_fetch_assoc($sqlGenero)){

$separa = explode(',', $resGenero['genero']); 

$separaUniq = array_unique($separa);
$separaCont = count($separaUniq);
}
for($i = 0; $i < $separaCont; $i++){
echo $separa[$i].'<br>';
}

 

Fiz de formas a usar o For e outras coisa mais não consigo separas os gêneros e depois remover os duplicados.

 

Alguém tem outra forma de fazer isto, ou pode me dar uma dica de como resolver este problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

<?
$sqlGenero = mysql_query("SELECT genero FROM filmes GROUP BY genero");
       while($resGenero = mysql_fetch_assoc($sqlGenero)){
		$genero = explode(",",$resGenero[0]);
?>
<?=$genero[0]?><br />
<? } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho uma coluna chamada ( genero ) onde gravei os Gêneros de alguns filmes, porem cada filme tem em media de 3 a 4

gênero diferente.

Assim postei os gênero na coluna (genero) separando-os por (,) virgulas, agora preciso imprimir cada gênero em lista

sem que eles se repitam, para poder classificar as consultas de filmes por gênero.

 

Fiz os seguintes as seguintes consultas:

 

Desta forma meu script separa certinho os Gêneros porem fica em acesso e com valores repetidos

$sqlGenero = mysql_query(" SELECT genero FROM filmes GROUP BY genero");
while($resGenero = mysql_fetch_assoc($sqlGenero)){

$separa = explode(',', $resGenero['genero']); 

$separaUniq = array_unique($separa);
$separaCont = count($separaUniq);

for($i = 0; $i < $separaCont; $i++){
echo $separa[$i].'<br>';
}
}

 

Desta forma meu script separa certinho os Gêneros porem so imprimir 4 resuldaos

$sqlGenero = mysql_query(" SELECT genero FROM filmes GROUP BY genero");
$i =0;
$separa = array();
while($resGenero = mysql_fetch_assoc($sqlGenero)){

$separa = explode(',', $resGenero['genero']); 

$separaUniq = array_unique($separa);
$separaCont = count($separaUniq);
}
for($i = 0; $i < $separaCont; $i++){
echo $separa[$i].'<br>';
}

 

Fiz de formas a usar o For e outras coisa mais não consigo separas os gêneros e depois remover os duplicados.

 

Alguém tem outra forma de fazer isto, ou pode me dar uma dica de como resolver este problema?

 

 

só mude a consulta para:

"SELECT DISTINCT(genero) FROM filmes ORDER BY genero"

 

essa consulta irá retornar todos os generos distintos que estão cadastrados nessa tabela

mas se você for o desenvolv edor do sistema em si...

te aconselho colocar os generos em outra tabela, e colocar somente o ID no genero no cadastro do filme...

fica mais facil a manutenção e fica mais organizado tb...^^

 

espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela dica amigo, mas não tive sucesso usando o (DISTINCT) continua a mesma coisa!

 

Lembrando que tenho os generos divididos por ( , ) dentro da Coluna (Genero)

 

Ex:

Ação , Aventura , Terror

Terro, Drama, Terror

Ação , Aventura , Drama

 

Resultado com o Explode:

 


  1.  
  2. Acão
  3. Acão
  4. Aventura
  5. Aventura
  6. Terror
  7. Terror
  8. Drama
  9. Drama
     

 

A intenção e que fique assim:

 


  1.  
  2. Ação
  3. Aventura
  4. Terror
  5. Drama

 

imagino que se eu fazer um explode dentro da consulta sql + o GROUP By talvez daria pra fazer, mas como faço isso?

Sera que o sql tem esta função ?

 

 

 

só mude a consulta para:

"SELECT DISTINCT(genero) FROM filmes ORDER BY genero"

 

essa consulta irá retornar todos os generos distintos que estão cadastrados nessa tabela

mas se você for o desenvolv edor do sistema em si...

te aconselho colocar os generos em outra tabela, e colocar somente o ID no genero no cadastro do filme...

fica mais facil a manutenção e fica mais organizado tb...^^

 

espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela dica amigo, mas não tive sucesso usando o (DISTINCT) continua a mesma coisa!

 

Lembrando que tenho os generos divididos por ( , ) dentro da Coluna (Genero)

 

Ex:

Ação , Aventura , Terror

Terro, Drama, Terror

Ação , Aventura , Drama

 

Resultado com o Explode:

 


  1.  
  2. Acão
  3. Acão
  4. Aventura
  5. Aventura
  6. Terror
  7. Terror
  8. Drama
  9. Drama
     

 

A intenção e que fique assim:

 


  1.  
  2. Ação
  3. Aventura
  4. Terror
  5. Drama

 

imagino que se eu fazer um explode dentro da consulta sql + o GROUP By talvez daria pra fazer, mas como faço isso?

Sera que o sql tem esta função ?

 

só digo uma coisa, brother... replaneje esse banco de dados, pq com ctz vai dar dor de cabeça no futuro....

se você deixar isso tudo numa coluna só... vai dar mais trabalho pra você fazer as pesquisas...

divida isso em 3 colunas separadas, tipo: GENERO_1, GENERO_2, GENERO_3...

crie outra tabela que tenha todos os generos cadastrados... e nessa colunas, coloque SOMENTE O ID do genero q tem cadastrado nessa tabela nova...

 

isso facilitaria você listar, pois seria só dar um simples select nessa tabela... e também facilitaria a pesquisa na tabela de filmes... pois seria só você colocar no WHERE assim: GENERO_1 = $variavel OR GENERO_2 = $variavel OR GENERO_3 = $variavel...

 

espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda amigo, não acho vantagem criar outra tabela para depois ficar juntando-as em Consultas !

 

O script que montei para selecionar os filmes por genero estas funcionando beleza!

 

Fiz uma consulta usando o ( WHERE genero LIKE '$pegaGenero' ) Onde pego qualquer genero sem problema !

 

Porem a inclusão dos generos no link foi todos manuais, e minha ideia era deixar tudo dinamico, para evitar que novos generos não deixassem de ser adicionas automaticamente!

 

Ex:

 

if(isset($_GET['genero'])){
$generoGet = $_GET['genero'];
$filtroGenero = " where genero LIKE '%".$generoGet."%' ORDER BY nome ASC  ";
}

 

A ideia e só fazer isso Dinamicamente não Manual !

 <a title=" Ver os Filmes que estão em Cartaz " href="<?php echo ''.$urlBase.'/'.$urlUm.'&genero=aventura';?>">Aventura </a> |
 <a title="Ver Filmes que serão lançados em Breve " href="<?php echo ''.$urlBase.'/'.$urlUm.'&genero=comedia';?>">Comedia</a> |
 <a title=" Ver os Filmes que estão em Cartaz " href="<?php echo ''.$urlBase.'/'.$urlUm.'&genero=drama';?>">Drama </a> |

 

No caso agora vou ver se deixo o campo Genero pre-definido, assim ao postar o filme a pessoa escolhe os generos já cadastrado !

 

Muito obrigado pela ajuda amigo e pelas dicas amigo!

 

 

 

 

só digo uma coisa, brother... replaneje esse banco de dados, pq com ctz vai dar dor de cabeça no futuro....

se você deixar isso tudo numa coluna só... vai dar mais trabalho pra você fazer as pesquisas...

divida isso em 3 colunas separadas, tipo: GENERO_1, GENERO_2, GENERO_3...

crie outra tabela que tenha todos os generos cadastrados... e nessa colunas, coloque SOMENTE O ID do genero q tem cadastrado nessa tabela nova...

 

isso facilitaria você listar, pois seria só dar um simples select nessa tabela... e também facilitaria a pesquisa na tabela de filmes... pois seria só você colocar no WHERE assim: GENERO_1 = $variavel OR GENERO_2 = $variavel OR GENERO_3 = $variavel...

 

espero ter ajudado...

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.