Re:Duplicidades

6 respostas
nbluis

Utilize um group by na sua clausula SQL.

Até…

6 Respostas

J

Ao utilizar group by e order by juntos você precisa especificar no seu select as colunas que serão utilizadas nessas cláusulas. E o group by vem antes do order by.

Segue exemplo:

select uf, razaosocial 
from tb_parceiro 
where uf = 'sp' 
group by uf, razaosocial 
order by razaosocial

Geralmente junto com o group by é utilizado uma função de agregação no select, exemplo, sum() ou count().

Poderia ser assim a sua consulta

select uf, count(razaosocial)
from tb_parceiro 
where uf = 'sp' 
group by uf
order by razaosocial

Irá listar a quantidade de razaosocial para cada uf, onde a uf seja ‘SP’.

J

Fiz um teste rápido aqui em banco Oracle e funciona:

Com order by:

select * from tabela order by campo;

     CAMPO     CAMPO1     CAMPO2
----------    ----------     ----------
         0             3              4
         1             1              2
         2             2              2
        56            77            88
       100             4            5

5 rows selected.

Sem order by, lista na ordem dos inserts:

select * from tabela;

     CAMPO     CAMPO1     CAMPO2
----------      ----------    ----------
         1             1             2
         2             2             2
         0             3             4
       100             4             5
        56            77            88

5 rows selected.
everson_z

Coloquei um exemplo do meu problema.
Na minha busca ele vai buscar os cadastro em que "uf" é igual a SP mas, tenho 15 cadastro em na cidade de SP onde existem (2 sto andre), (2 SBC) e (11 de São paulo).

O println não pode repertir os valores, só pode mostrar 1 de cada... 1 de São Paulo, 1 de Sto Andre e 1 de São Bernardo.

Recupera dados
Connection con;
con = Conexao.abreConexao();
List<BeanSejaParceiro> beanSejaParceiro = new ArrayList<BeanSejaParceiro>();

PreparedStatement stmt = con.prepareStatement("select * from tb_parceiro where uf = 'SP' order by bairro");

while(rs.next()){

String razaoSocial = rs.getString("razaoSocial");
String nomeFantasia =  (rs.getString("nomeFantasia");
String uf = rs.getString("uf");
String cidade = rs.getString("cidade"));

System.out.println(cidade);

}
Vlw
everson_z

Legal…
Deu um problema order by[color=red] /[/color] group by uf não funciona os dois… como teria que ser a linha?

select * from tb_parceiro where uf = 'sp' order by razaosocial group by uf; vlw

everson_z

Ele não busca na ordem do bairro e nem da erro… faz a busca normal, ele mostra na ordem de cadastro

con.prepareStatement("select * from tb_parceiro where uf like '%" + estado +"%' and cidade like '%" + cidade + "%' and bairro like '%" + bairro + "%' and ativa = 'sim' order by bairro" );
everson_z

Quando eu mando direto no mysql funciona mas quando no cod java não executa na ordem

Pode ser Bug ?

Criado 20 de março de 2007
Ultima resposta 22 de mar. de 2007
Respostas 6
Participantes 3