Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta SQL con DISTINCT

Estas en el tema de Consulta SQL con DISTINCT en el foro de Bases de Datos General en Foros del Web. Hola... necesito obtener valores únicos de identificadores numéricos de una tabla. En esta tengo varios campos, de los cuáles A y B contienen números enteros. ...
  #1 (permalink)  
Antiguo 26/06/2011, 03:28
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años
Puntos: 4
Consulta SQL con DISTINCT

Hola... necesito obtener valores únicos de identificadores numéricos de una tabla.
En esta tengo varios campos, de los cuáles A y B contienen números enteros.

¿Cómo hago para obtener todos los números enteros sin arrojar duplicados?

Probé con SELECT DISTINCT (`a`,`b`) pero no es correcto.

¿Existe solución alternativa?
  #2 (permalink)  
Antiguo 26/06/2011, 04:50
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Consulta SQL con DISTINCT

Tendrías que pones este post en la seccion de bases de datos.

No se si puedes hacer esto;

SELECT A FROM TABLA NATURAL JOIN SELECT B FROM TABLA

En MySql creo que sirve.

Un saludo!
  #3 (permalink)  
Antiguo 26/06/2011, 05:26
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años
Puntos: 4
Respuesta: Consulta SQL con DISTINCT

Gracias, aunque segurié buscando alguna alternativa.
  #4 (permalink)  
Antiguo 27/06/2011, 08:26
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Consulta SQL con DISTINCT

A y B son una clave unica? Porque si tienen valores repetidos, como vas a saber privilegiar uno sobre otro? Si tenes datos donde A y B estan repetidos podes usar GROUP BY pero como te digo, los valores se van a pisar.
  #5 (permalink)  
Antiguo 27/06/2011, 10:33
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Consulta SQL con DISTINCT

Has probado con esto?

SELECT A as ALIAS FROM TABLA NATURAL JOIN SELECT B as ALIAS FROM TABLA


Te tendría que traer una columna "ALIAS" con los resultados diferentes.

Un saludo!
  #6 (permalink)  
Antiguo 27/06/2011, 11:25
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta SQL con DISTINCT

Hola Alvaro_Franz:

Al no poner algunos datos de ejemplo es difícil darte una respuesta puntual a tu problema, ¿a qué te refieres con no arrojar números Duplicados?, se me ocurren dos posibles escenarios para tus datos, uno sería más o menos así:

Código:
TuTabla
+---------+----------+
| a       | b        |
+---------+----------+
|       1 |       12 |
|       1 |       12 |
|       2 |       13 |
|       3 |       15 |
|       4 |       16 |
+---------+----------+
aquí se puede observar que hay una pareja de registros con valores idénticos (a = 1, b=12) si quisieras omitir estos resultados podrías hacerlo así:
*
Código SQL:
Ver original
  1. SELECT a, b FROM TuTabla
  2. GROUP BY a, b
  3. HAVING COUNT(*) = 1;


Otro escenario es que tengas tus datos así

Código:
+---------+----------+
| a       | b        |
+---------+----------+
|       2 |        2 |
|       3 |       15 |
|       4 |       16 |
|       5 |        5 |
|       6 |       16 |
+---------+----------+
donde hay dos registros (a=b=2 y a=b=5) si quisieras que registros no se mostraran simplemente tendrías que hacer lo siguiente:

Código SQL:
Ver original
  1. SELECT a, b FROM TuTabla
  2. WHERE a != b

Espero que alguno de las dos consulta te pueda servir, pero si continuas con problemas pon algunos datos de ejemplo para ver qué es lo que necesitas.

Saludos
Leo.
  #7 (permalink)  
Antiguo 27/06/2011, 19:28
 
Fecha de Ingreso: septiembre-2008
Mensajes: 35
Antigüedad: 15 años, 7 meses
Puntos: 6
Respuesta: Consulta SQL con DISTINCT

Hola gente! Como les va? Les comento mi situación:

Tengo un SQL que devuelve estos resultados:

Cod | Persona | Beneficiario
0 | 160 | 0
0 | 310 | 0
0 | 310 | 2
0 | 420 | 0
0 | 502 | 1
1 | 583 | 0

Como podrán ver, hay 6 registros.

Yo quiero que me diga la cantidad de registros que hay en con COD = 0, es decir, hay 5 registros.
Para eso hago un group by por COD, pero si hago un count de PERSONA me arroja 4 registros ya que estoy haciendo un SELECT DISTINCT.

El SQL es mucho más largo pero la idea es que me digan como hago para que me cuente 5 registros aún usando DISTINCT.
Probé con count(distinct Persona, Beneficiario) pero me tira error ya que son campos de diferente tipo.

Muchas gracias por leer mi problema.

Saludos!
  #8 (permalink)  
Antiguo 28/06/2011, 00:52
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Consulta SQL con DISTINCT

Haz un select count(Cod) Where Cod = 0

Saludos!
  #9 (permalink)  
Antiguo 28/06/2011, 06:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 35
Antigüedad: 15 años, 7 meses
Puntos: 6
Respuesta: Consulta SQL con DISTINCT

Si, eso funcionaría. Pero el SQL es más grande y tiene un where donde no puedo filtrar por COD. Es decir, tengo que dar el total de registros por cada COD, es decir:

COD | Cantidad
0 | 5
1 | 2
2 | 10

Se entiende? Gracias!
  #10 (permalink)  
Antiguo 28/06/2011, 10:26
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años
Puntos: 4
Respuesta: Consulta SQL con DISTINCT

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola Alvaro_Franz:

Al no poner algunos datos de ejemplo es difícil darte una respuesta puntual a tu problema, ¿a qué te refieres con no arrojar números Duplicados?, se me ocurren dos posibles escenarios para tus datos, uno sería más o menos así:

Código:
TuTabla
+---------+----------+
| a       | b        |
+---------+----------+
|       1 |       12 |
|       1 |       12 |
|       2 |       13 |
|       3 |       15 |
|       4 |       16 |
+---------+----------+
aquí se puede observar que hay una pareja de registros con valores idénticos (a = 1, b=12) si quisieras omitir estos resultados podrías hacerlo así:
*
Código SQL:
Ver original
  1. SELECT a, b FROM TuTabla
  2. GROUP BY a, b
  3. HAVING COUNT(*) = 1;


Otro escenario es que tengas tus datos así

Código:
+---------+----------+
| a       | b        |
+---------+----------+
|       2 |        2 |
|       3 |       15 |
|       4 |       16 |
|       5 |        5 |
|       6 |       16 |
+---------+----------+
donde hay dos registros (a=b=2 y a=b=5) si quisieras que registros no se mostraran simplemente tendrías que hacer lo siguiente:

Código SQL:
Ver original
  1. SELECT a, b FROM TuTabla
  2. WHERE a != b

Espero que alguno de las dos consulta te pueda servir, pero si continuas con problemas pon algunos datos de ejemplo para ver qué es lo que necesitas.

Saludos
Leo.
Gracias... se trataba del caso 1.. y es la solución perfecta. Disculpa no haberme explicado mejor, usaré tu tabla de ejemplo para la próxima.. un saludo.
  #11 (permalink)  
Antiguo 28/06/2011, 12:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Consulta SQL con DISTINCT

Para Alvaro_Franz:

Me da gusto que te haya servido el código...

Para tinthenet:

No es correcto que utilices un foro abierto para hacer una nueva pregunta, lo ideal es que abras tu propio foro, ya que aunque los problemas tengan cierta relación no son iguales. No acostumbro a contestar preguntas cuando sucede esto, por lo general espero hasta que publiquen la pregunta en un nuevo post, pero bueno, a ver si te sirve esto:

supongamos que tienes los siguientes datos:

Código:
Cod | Persona | Beneficiario
0 | 160 | 0
0 | 310 | 0
0 | 310 | 2
0 | 420 | 0
0 | 310 | 0
0 | 502 | 1
1 | 583 | 0
1 | 310 | 0
Puedes hacer lo siguiente

Código SQL:
Ver original
  1. SELECT cod, COUNT(*) total FROM
  2. (SELECT DISTINCT * FROM TuTabla) T
  3. GROUP BY cod

el resultado de este script sería

Código:
cod         total
----------- -----------
0           5
1           2
es decir, aunque existen 6 registros con cod = 0 hay dos repetidos (0 | 310 | 0) por lo tanto sólo se contabilizan una vez, existe otro que tiene la misma persona, pero diferente beneficiario (0 | 310 | 2) por lo tanto este SI SE CONTABILIZA.

Si continuas con problemas te pido que por favor ABRAS UNA NUEVA PREGUNTA para no mezclar temas y tratar de ayudarte.

Saludos
Leo.
  #12 (permalink)  
Antiguo 28/06/2011, 14:24
 
Fecha de Ingreso: septiembre-2008
Mensajes: 35
Antigüedad: 15 años, 7 meses
Puntos: 6
Respuesta: Consulta SQL con DISTINCT

Hola leonardo_josue, gracias por tomarme la molestía de explicarme y contestar igualmente. Lo vi casi identico porque era un tema de DINSTINCT y no quería ser reiterativo con la pregunta. Pero bueno, ahora se.

Anduvo perfecto! Gracias nuevamente :)

Saludos!

Etiquetas: mysql, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:44.