Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gostaria de saber se e possível trazer outros campos utilizando o DISTINCT ou alguma outra função SQL.
Por exemplo:
Tabela
Campo1 | Campo2 | Campo3 | Campo4 |
______________________________________|
valor1 | campo | campo | campo |
valor2 | campo | campo | campo |
valor3 | campo | campo | campo |
valor4 | campo | campo | campo |
valor5 | campo | campo | campo |
valor1 | campo | campo | campo |
valor2 | campo | campo | campo |
______________________________________
Digamos que eu quisesse trazer todos os valores de Campo1 que fossem distintos, porém, também fosse trabalhar com os outros campos...
Se eu fizer: SELECT DISTINTIC Campo1, Campo2, Campo3, Campo4 FROM tabela....
Não encontrará nenhum registro, porque todos eles se repetem em algum lugar, entende?
É um exemplo bem simples que utilizei, mas acho que deu pra entender mais ou menos o que estou buscando... Aguém consegue me ajudar?
Melhor vc colocar as suas tabelas e o que está buscando para ficar mais fácil de entender ;)
Eu não entendi muito bem o que vc quer, mas experimenta fazer isso:
SELECT tabela.seu_campo as PRINCIPAL, columns.column_name AS CAMPOS FROM tabela, information_schema.columns WHERE columns.table_name='tabela' GROUP BY tabela.seu_campo order by tabela.seu_campo ASC
Estou precisando a mesma ajuda. Tenho uma lista telefônica onde usei o DISTINCT para que acrescentasse no menu mais um Ramo de Atividade das empresas, cada vez que era criado um novo sem o repetir. Até aí tudo certinho. Mas no Post, fora do menu, onde eu quero que apareça as empresas eu criei uma Div que exibirá o título do ramo. Porém, a div se repete a cada empresa que exibe e não por ramo. Veja na no link: http://www.clictapejara.com/lista-tapejara-rs.php . Vejam que aparece duas vezes a Div Amarela em Supermercados. Gostaria que imprimisse os dois supermercados da Tabela mas apenas uma Div por ramo de atividade.
Abaixo meu codigo do menu e do post, lembrando que o menu funcionou certinho:
<div id="menubv"><ul id="menuver">
<?php
$strSQL = ("SELECT DISTINCT(Ramo)FROM Lista_Tapejara_RS ORDER BY Ramo") or die(mysql_error());
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
echo "<li><a href='#".$row['Ramomenu']."'>".$row['Ramo']."</a></li>"; }
?>
</ul>
<br /><br /><br />
</div>
</div> <!-- FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FIM DA SIDEBAR 1 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -->
<!-- ***************************************************** INICIO DO CONTEUDO ************************************* -->
<div id="post">
<div class="imagem">
<img src="images/gifs/aqui2.gif" alt="Buscar" align="middle" style="width:90px; height:50px; margin-left:60px; border:0px; float:left;" />
<br /><br /><br />
</div>
<div class="cadastrar">
<a href="[http://www.clictapejara.com/lista-cadastrar.php](http://www.clictapejara.com/lista-cadastrar.php)">
<span>CLIQUE AQUI PARA CADASTRAR <br />SUA EMPRESA GRÁTIS!</span>
</a>
</div>
<br /><br />
<div class="lista-geral">
<?php
$clic = mysql_query ("SELECT * FROM Lista_Tapejara_RS ORDER BY Empresa") or die(mysql_error());
if(@mysql_num_rows($clic) == 0){echo "Seja o primeiro a Cadastrar sua Empresa neste Ramo!";}
while($row = mysql_fetch_array($clic)){
{echo "<div class='barra-titulo'>".$row['Ramo']."</div>";}
echo "<h1>".$row['Empresa']."</h1>";
echo "<div class='descreve'>
<div class='telefones'><table border='0' cellspacing='0' cellpadding='0'><tr><td>
<img src='images/fone.png' alt='telefone' align='middle' style='width:35px; height:35px; padding:5px 0px; border:0px;' /></td><td valign='middle'>
<span style='font-size:14px; color:#900;padding:10px 0px;'> (".$row['DDD'].")</span><span style='color:#900; padding:10px 0px; font-size:25px; font-weight:bold;'> ".$row['Telefone1']. "</span> ou <span style='font-size:14px; padding:10px 0px; color:#300;'>(".$row['DDD'].") </span><span style='font-size:25px; color:#300; padding:10px 0px;;'>".$row['Telefone2']."</span></td></tr></table>
<p>Rua: ".$row['Rua'].", ".$row['Numero']."<br />
Complemento: ".$row['Complemento']."<br />
Bairro: ".$row['Bairro']." CEP: ".$row['CEP']." Cidade: ".$row['Cidade']." - ".$row['Estado']."</p>
</div>
</div>";
echo "<br />
<p><a href='#'><span style='color: #000000; cursor:hand; font-weight:bold; font-size:14px'>Clique para ir ao Topo da Página</span></a></p>";
}
?>É preciso algum cuidado ao usar DISTINCT, queries com mais de uma tabela geram um produto cartesiano, as regras de join devem ser usadas para evitar o produto cartesiano indevido, mas em algumas condições queremos este produto cartesiano indevido.
Exemplo
temos Clientes---<assina>---revista
se quisermos uma lista de clientes que assinem alguma revista podemos fazer :
select cliente.codigo,cliente.nome
from cliente,assina
where cliente.codigo = assina.codigo_cliente
só que aqui tem um porém se o infeliz assinar mais de revista vai aparecer o nome repetido quantas revistas ele assine, assim podemos fazer :
select distinct cliente.codigo,cliente.nome
from cliente,assina
where cliente.codigo = assina.codigo_cliente
Neste caso podemos optar o DISTINCT para não fazer um subselect por exemplo.
MAS , tome um cuidado ao usar DISTINCT para solucionar uma query pois PODE mascarar um problema, que pode ser :
-Faltou uma condição de igualdade do JOIN
-Uma tabela entrou de gaiata (sem necessidade)
-Existe duplicidade de registros na tabela (integridade referencial bichada)
Na documentação do DISTINCT deveria vir um aviso dos tipos da bula.
USE COM CUIDADO !!!
:)
Espero ter ajudado.
Não entendi... a função DISTINCT é exatamente para trazer os dados que não sejam repetidos...