Consulta Distinct a un solo campo

Iniciado por matagalo, 8 Junio 2012, 09:41 AM

0 Miembros y 1 Visitante están viendo este tema.

matagalo

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

robertito_prado

prueba :
  select distintc (Nombre,idNombre)
   from tabla;
Mira a tu alrrededor y llora, dime que cojones se valora

matagalo

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)

robertito_prado

#3
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
Mira a tu alrrededor y llora, dime que cojones se valora

matagalo

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?

robertito_prado

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.
Mira a tu alrrededor y llora, dime que cojones se valora

matagalo

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         

robertito_prado

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.
Mira a tu alrrededor y llora, dime que cojones se valora

matagalo

Tienes razon pero ahora busco un resultado por pantalla para mi web app, luego ya optimizaré tema de base de datos

gracias

Toxico

#9
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



solo el principio....