Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: matagalo en 8 Junio 2012, 09:41 am



Título: Consulta Distinct a un solo campo
Publicado por: matagalo en 8 Junio 2012, 09:41 am
Hola chic@s,
Dada una tabla con los campos idNombre y nombre con la siguiente estructura:
IdNombre    Nombre
   1                Juan
   2                María
   3                Juan
   4                Pepe

La salida que necesito son el idNombre y nombre cuyos nombres sean distintos, osea:
1   Juan
2   María
4   Pepe

He intentado una consulta con distinct a un solo campo pero no funciona:
SELECT distinct (Nombre), idNombre
FROM tabla

Haber si me podeis echar una mano, es una consulta simple pero estoy atascado :(
gracias anticipadas


Título: Re: Consulta Distinct a un solo campo
Publicado por: robertito_prado en 8 Junio 2012, 11:08 am
prueba :
   select distintc (Nombre,idNombre)
   from tabla;


Título: Re: Consulta Distinct a un solo campo
Publicado por: matagalo en 8 Junio 2012, 11:13 am
El distinct lo aplica sobre los dos campos y como el id es distinto en todos los casos muestra todos los nombres (y yo quiero aquellos que no se repitan)


Título: Re: Consulta Distinct a un solo campo
Publicado por: robertito_prado en 8 Junio 2012, 11:17 am
Ya claro, es que deberia de ir de tu forma...
Yo creo que no se puede, porque no hay ningun numero repetido y aunque haya nombres no importa, porque no los relacionas de ninguna manera...Tienes que tener otras tablas o algo para relacionarlos si no nada.
si no en ves de esto :
    1   Juan
    2   María
    4   Pepe

te podria mostrar esto:
    2   María
    3   Juan
    4   Pepe


Título: Re: Consulta Distinct a un solo campo
Publicado por: matagalo en 8 Junio 2012, 12:06 pm
te podria mostrar esto:
    2   María
    3   Juan
    4   Pepe

Me serviría igual, en este caso mostrar un id u otro da igual ¿como sería?


Título: Re: Consulta Distinct a un solo campo
Publicado por: robertito_prado en 8 Junio 2012, 12:26 pm
No, no. Dije que te podria mostrar tanto una como otra.
Si no tienes relacionadas las tablas, te repito que creo que no se puede, o yo al menos no se.


Título: Re: Consulta Distinct a un solo campo
Publicado por: matagalo en 8 Junio 2012, 12:38 pm
Se me ha ocurrido una solución que podría servir.. Voy a incluir un campo booleano repetido, luego lo incluyo la clausula where. Esta es la idea:

ESTRUCTURA TABLA:

IdNombre    Nombre      Repetido
   1                Juan            False
   2                María           False
   3                Juan            TRUE
   4                Pepe           False


CONSULTA:

SELECT Nombre, idNombre
FROM tabla
WHERE repetido=false


SALIDA ESPERADA:

IdNombre    Nombre     
   1                Juan           
   2                María           
   4                Pepe         


Título: Re: Consulta Distinct a un solo campo
Publicado por: robertito_prado en 8 Junio 2012, 13:13 pm
Asi puede valr, pero es muy chapucero y ademas solo te serviria para esta tabla en concreto...
Lo que se supone es que tienes que aprenderlo para cualquier tabla que te pongan, no solo para esta.


Título: Re: Consulta Distinct a un solo campo
Publicado por: matagalo en 8 Junio 2012, 13:38 pm
Tienes razon pero ahora busco un resultado por pantalla para mi web app, luego ya optimizaré tema de base de datos

gracias


Título: Re: Consulta Distinct a un solo campo
Publicado por: Toxico en 10 Junio 2012, 03:15 am
Hola chic@s,
Dada una tabla con los campos idNombre y nombre con la siguiente estructura:
IdNombre    Nombre
   1                Juan
   2                María
   3                Juan
   4                Pepe

La salida que necesito son el idNombre y nombre cuyos nombres sean distintos, osea:
1   Juan
2   María
4   Pepe

He intentado una consulta con distinct a un solo campo pero no funciona:
SELECT distinct (Nombre), idNombre
FROM tabla

Haber si me podeis echar una mano, es una consulta simple pero estoy atascado :(
gracias anticipadas

Si aun no te sale el query que quieres es este.

Código:
select (
select tabla.id
from tabla
where tabla.nombre = t.nombre
limit 1

) as id,
t.nombre
from
(select nombre
from tabla
group by nombre) as t




Título: Re: Consulta Distinct a un solo campo
Publicado por: Aberroncho en 11 Junio 2012, 22:33 pm
Yo lo simplificaría un poco más:

Código
  1.  
  2. SELECT
  3.       MIN( Tabla.IdNombre ) AS IdNombre,
  4.       Tabla.Nombre
  5. FROM
  6.       Tabla
  7. GROUP BY
  8.       Tabla.Nombre
  9.  
  10.  



Título: Re: Consulta Distinct a un solo campo
Publicado por: Rodwin en 15 Marzo 2022, 02:28 am
Saludos logre resolver el dilema

suponemos que tenemos una tabla1 y queresmos todos los registros distintos del campo1 asi quedaria la consulta

SELECT  id, campo1, campo2 ... etc  FROM tabla1 Aux WHERE  id = (SELECT  id FROM tabla1 WHERE campo1 = Aux.campo1  LIMIT 1  )

Que hace la consulta, lo especial esta en la clausula where compara el ID con el ID de la sub consulta que va a devolver el primer elemento que cumpla con la condicion campo1 = Aux.campo1  y como siempre va a devolver el primer elemento cuando se compare con el primer elemento que se repita los id seran distinto y no tomara ese registro asi susesivamente parasara lo mismo con cada registro repetido devolviendo asi solo el primer registro que encuentre distitno en campo1