Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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
Cita de: robertito_prado en  8 Junio 2012, 11:17 AM
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
Cita de: 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

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

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 (sql) [Seleccionar]


SELECT
      MIN( Tabla.IdNombre ) as IdNombre,
      Tabla.Nombre
FROM
      Tabla
GROUP BY
      Tabla.Nombre