Dúvida com SELECT - lista em cada registro

14 respostas
java
R

Tenho estas tabelas:

CLIENTE:
id_cliente
nome
rg

TELEFONE:
id_telefone
id_cliente
telefone

Tem como efetuar um SELECT para retornar os cadastros dos clientes com todos os telefones correspondentes?

Por exemplo , dar um SELECT no cliente de código 1 e retornar isto:
cod_cliente - 1
nome do cliente 1
rg do clientes 1
lista de telefones do cliente 1

14 Respostas

igomes

Claro que tem

R

Poderia me dar um exemplo?

Michael071192

Nesse caso pelo que deu para compreender, se tratando de uma lista de telefones de um cliente, você vai precisar de um array de telefones na classe cliente.

R

Isso mesmo, na classe Cliente tenho um List

Mas minha dúvida é de como fazer o SELECT para me retornar além dos dados do cliente, retornar também a lista de telefones referente a cada cliente…

Michael071192

Considerando que sua classe já tem uma lista de TELEFONE basta você preencher a mesma com um select onde id_cliente = cliente.id_cliente, sendo assim quando a classe for carregada você terá as informações agrupadas no objeto.

R

O problema é que não uso JPA nem Hibernate, estou usando o JDBC do java mesmo…

Michael071192

Dando um tiro no escuro acho que seria algo próximo disso.

String sql = "SELECT * FROM TELEFONE where id_cliente ='"+cliente.id_cliente+"'";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
 Telefone tel = new Telefone();
 tel.id_telefone = rs.getInt("id_telefone");
 tel.id_cliente = rs.getInt("id_cliente");
 tel.telefone = rs.getString("telefone");
 cliente.telefone.add(tel);
}
rs.close();
R

Mas ai, aconteceria de se o cliente tiver 3 telefones cadastrados, iria retornar 3 registros do mesmo cliente, queria que retornasse apenas um registro do cliente e a lista de telefone junta…

Michael071192

Dessa forma quem estaria agrupando o registro seria o Objeto(Não sei se o conceito de OO é claro para você) O Objeto Cliente seria único contendo todos os telefones do mesmo na sua lista de telefones.

obs: pode ser que não tenha ficado claro para meu entendimento sua necessidade.

R

Nas classe seu sei como ficaria, classe Cliente com uma lista de telefones dentro dela, mas minha dúvida é se existe alguma forma de em apenas um Select retornar um registro para cada cliente mas já com a lista de telefones de cada um…

C

Usa hibernate, mano!

Michael071192

Ah sim nesse caso o que conheço de SQL não pois você estaria agrupando N linha a Uma desconheço essa possibilidade, passo aos mestres do GUJ rsrs
Obs: o que conseguiria fazer seria algo próximo disso :

ID_CLIENTE | NOME | RG | ID TELEFONE | ID_CLIENTE | TELEFONE
1 | A | 1 | 1 | 1 |[telefone removido]
1 | A | 1 | 2 | 1 |[telefone removido]
1 | A | 1 | 3 | 1 |[telefone removido]

igomes

@caio.augustoo2016, o cara está com dúvida de fazer um select, que não é complicado, e vc fala pra ele usar o hibernate ? Ajuda né, o que mais tem hoje em dia, é a galera que mal conhece do mundo relacional e já vai para o hibernate e quebra a cara, é a mesma coisa de querer estudar spring/vraptor, sem antes passar por servlet, já que os mesmo usam isso por trás.
Jaja te falo @Rodrigo1895

C

@igomes Não tinha olhado por este “ponto de vista”. Correria total! Mas tem razão, Vlw!

Criado 22 de março de 2016
Ultima resposta 22 de mar. de 2016
Respostas 14
Participantes 4