SQL - Buscar campos diferentes

 
Vista:
sin imagen de perfil

Buscar campos diferentes

Publicado por jordi (2 intervenciones) el 18/06/2015 17:33:19
Buenas

Tengo me interessaria sacar un listado con SQL server de una tabla que cumpla:
un campo sean repetidos
el otro campo sea diferente


si tengo dos campos

"cli_id" y otro campo "dom_dombancaria"

necesito buscar de estos que dom_dombancaria sean repetidos pero que los cli_id sea diferente

casos: como este, por ejemplo

cli_id dom_dombancaria
____________________
10 200 3000 4000
10 200 3000 4000
35 200 3000 4000


pero si son de este tipo no:

cli_id dom_dombancaria
____________________
10 200 3000 4000
10 200 3000 4000
35 200 3000 4000


Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.
Val: 62
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Buscar campos diferentes

Publicado por Leonardo Daniel A. (23 intervenciones) el 18/06/2015 18:00:15
Hola pues para empezar creo que escribiste mal los datos, porque son exactamente igual :p

cli_id dom_dombancaria cli_id dom_dombancaria
____________________ ____________________
10 200 3000 4000 10 200 3000 4000
10 200 3000 4000 10 200 3000 4000
35 200 3000 4000 35 200 3000 4000


pero puede ser

select cli_id, dom_dombancaria from tabla group by cli_id, dom_dombancaria

te regresaria
10 200 3000 4000
35 200 3000 4000


si tuvieras

cli_id dom_dombancaria
____________________
20 200 3000 4000
20 200 3000 4000
10 200 3000 4000
10 200 3000 4000
35 200 3000 4000

y haces el select, te arrojaria
20 200 3000 4000
10 200 3000 4000
35 200 3000 4000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Buscar campos diferentes

Publicado por jordi (2 intervenciones) el 18/06/2015 18:48:35
Si la verdad es que no he explicado muy bien

queria decir

cli_id dom_dombancaria
____________________
10 200 3000 4000
10 200 3000 4000
35 200 3000 4000


pero si son de este tipo no:

cli_id dom_dombancaria
____________________
10 200 3000 4000
10 200 3000 4000
10 200 3000 4000


asi pues con estos datos:

cli_id dom_dombancaria
____________________
10 200 3000 4000
10 200 3000 4000
10 200 3000 4000
32 500 4000 6000
21 500 4000 6000


me arrojara:
cli_id dom_dombancaria
____________________
32 500 4000 6000
21 500 4000 6000

es possible?


gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Buscar campos diferentes

Publicado por leonardo_josue (1173 intervenciones) el 18/06/2015 23:27:50
Hola Jordi:

Tal como pones tus tablas, no se distingue qué valores tiene un campo y qué valores tiene el otro... debes tratar de darle un mejor formato a tus códigos para que sean más legibles... Si entendí bien, en tu tabla tienes algo como esto:

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM tabla;
+--------+-----------------+
| cli_id | dom_dombancaria |
+--------+-----------------+
|     10 | 200 3000 4000   |
|     10 | 200 3000 4000   |
|     10 | 200 3000 4000   |
|     32 | 500 4000 6000   |
|     21 | 500 4000 6000   |
+--------+-----------------+
5 rows in set (0.00 sec)

Una forma para obtener lo que quieres sería haciendo un COUNT-DISTINCT... es decir, contar cuántos distintos cli_id tienen el mismo dom_dombancaria... sería más o menos así:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT dom_dombancaria, COUNT(DISTINCT cli_id) total
    -> FROM tabla
    -> GROUP BY dom_dombancaria;
+-----------------+-------+
| dom_dombancaria | total |
+-----------------+-------+
| 200 3000 4000   |     1 |
| 500 4000 6000   |     2 |
+-----------------+-------+
2 rows in set (0.00 sec)

Observa que en el primer caso, aunque hay tres registros con la dom_dombancaria = 200 3000 4000, en realidad las tres pertenecen al mismo cliente, por lo tanto el conteo total regresa sólo 1.

Para el caso de la dom_dombancaria = 500 4000 6000, aquí si existen dos clientes asociados, por lo tanto el COUNT es igual a 2...

Con esta consulta puedes obtener lo que necesitas. Agrega la cláusula HAVING para traer sólo los registros que tengan un COUNT >= 2 y utiliza esto como una subconsulta para filtrar tus datos, lo puedes hacer con IN, EXISTS o LEFT JOIN, trata de hacer la consulta por tu cuenta, si tienes problemas postea lo que intentaste hacer y con gusto tratamos de ayudarte,

Saludos
Leo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar