SQL - discriminar valores comunes

 
Vista:

discriminar valores comunes

Publicado por alexalfonse (1 intervención) el 03/10/2018 14:20:02
Hola buen día!

Quiero realizar una consulta que me permita:

1) No repetir valores en las tablas consultadas.

2) Si en los valores consultados en el punto 1, alguna de esas tablas presentan coincidencias, hacer un match para que me discrimine aquellas que son iguales.

He intentado usar la instrucción distinct para que me discrimine los valores iguales de cada tabla, pero sigo sin lograr hacer un match con ellos para verificar, cual de los valores dados por alguna de las tres tablas son iguales .

¿Que me sugieren?
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

discriminar valores comunes

Publicado por leonardo_josue (1173 intervenciones) el 03/10/2018 22:51:31
Hola alexalfonse:

Vayamos por partes:

1. ¿Con qué BD's estás trabajando? este dato siempre lo debes de poner cuando publiques algo en este foro, ya que este es de SQL genérico, pero cada DBMS maneja su propia sintaxis.

2. en su post nos dices esto:

1
2
3
Quiero realizar una consulta que me permita:
 
1) No repetir valores en las tablas consultadas.

¿A qué te refieres con valores repetidos y de cuantas tablas estamos hablando? si es más de una tabla, estás consultando toda la información a la vez o haces consultas distintas para cada tabla?

3. También comentas esto:

1
2
2) Si en los valores consultados en el punto 1, alguna de esas tablas presentan coincidencias, hacer un
match para que me discrimine aquellas que son iguales.

No me queda claro, esto, hablas de coincidencias y de valores iguales... O_o sería mejor que nos pusieras un ejemplo de tus tablas y qué es lo que esperas obtener como salida.

4. Finalmente pones esto:

1
2
3
He intentado usar la instrucción distinct para que me discrimine los valores iguales de cada tabla,
pero sigo sin lograr hacer un match con ellos para verificar, cual de los valores dados por alguna de las
tres tablas son iguales.

El operador DISTINCT sirve para eliminar REGISTROS DUPLICADOS, donde un registro duplicado ES AQUEL QUE TIENE TODOS LOS VALORES DE SUS COLUMNAS EXACTAMENTE IGUALES. Si existiera UN SOLO CAMPO CON UN VALOR DISTINTO, entonces no se excluyen de la consulta. Observa este ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> SELECT id, descripcion, otro_campo FROM tabla;
+------+-------------+------------+
| id   | descripcion | otro_campo |
+------+-------------+------------+
|    1 | uno         | otro uno   |
|    1 | uno         | otro uno   |
|    1 | uno         | otro 1     |
+------+-------------+------------+
3 rows in set (0.00 sec)
 
mysql> SELECT DISTINCT id, descripcion, otro_campo  FROM tabla;
+------+-------------+------------+
| id   | descripcion | otro_campo |
+------+-------------+------------+
|    1 | uno         | otro uno   |
|    1 | uno         | otro 1     |
+------+-------------+------------+
2 rows in set (0.00 sec)

En este caso, sólo sólo dos registros están duplicados, ya que el tercero, aunque tiene el mismo id y descripción, tiene un valor distinto en OTRO_CAMPO.

Si no se considera este campo, entonces SI SE CONSIDERA QUE LOS TRES REGISTROS ESTÁN DUPLICADOS:

1
2
3
4
5
6
7
mysql> SELECT DISTINCT id, descripcion FROM tabla;
+------+-------------+
| id   | descripcion |
+------+-------------+
|    1 | uno         |
+------+-------------+
1 row in set (0.03 sec)

y por lo tanto la consulta regresa solo un registro. En tu caso, dices que DISTINCT no te funciona, pero no nos pones el porqué, es decir, qué te está arrojando la consulta y que es lo que esperas obtener. así podríamos decirte alguna otra opción para lograr lo que necesitas.

Insisto, postea la estructura de tus tablas, pon algunos datos de ejemplo y a partir de esos datos dinos qué es lo que necesitas obtener.

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